3

我觉得我在这里缺少一些非常简单的东西。我正在构建一个使用 Esri ArcGIS API 的类,但是当我从arcgis-js-api'sd.ts文件中导入类型定义时,我收到打字稿错误“无法将'new'与类型缺少调用的表达式一起使用或构造签名。”

前任:

import * as IMap from 'esri/Map';

export class Foo {
    bar: (Map: IMap) {
        const map = new Map(); // <-- error here
    }
}

文件中的相关片段d.ts

declare namespace __esri {
    /* snip */
    interface Map extends Accessor, LayersMixin {
        allLayers: Collection;
        basemap: Basemap;
        ground: Ground;
    }

    interface MapConstructor {
        new(properties?: MapProperties): Map;
    }

    export const Map: MapConstructor;
    /* snip */
}

declare module "esri/Map" {
    import Map = __esri.Map;
    export = Map;
}

看起来类型定义对我来说是正确的,那么我做错了什么会让 Typescript 认为该IMap类型没有构造函数?

4

1 回答 1

8

您的Map参数中的 是该IMap类型的一个实例。如果您想将其键入为构造函数,请将其键入为typeof IMap

bar (Map: typeof IMap) {
    const map = new Map(); 
}
于 2017-09-01T02:46:38.043 回答