【问题标题】:Error "Cannot use 'new' with an expression whose type lacks a call or construct signature." when importing Esri types错误“不能将 'new' 与类型缺少调用或构造签名的表达式一起使用。”导入 Esri 类型时
【发布时间】:2018-02-09 22:51:02
【问题描述】:

我觉得这里缺少一些非常简单的东西。我正在构建一个使用 Esri ArcGIS API 的类,但是当我从 arcgis-js-apid.ts 文件中导入类型定义时,我收到打字稿错误“不能使用‘新’和表达式其类型缺少调用或构造签名。”

例如:

import * as IMap from 'esri/Map';

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

d.ts 文件中的相关 sn-ps:

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 类型没有构造函数?

【问题讨论】:

    标签: typescript arcgis-js-api esri-maps


    【解决方案1】:

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

    bar (Map: typeof IMap) {
        const map = new Map(); 
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-25
      • 2015-09-22
      • 2018-02-06
      • 1970-01-01
      • 2021-01-04
      • 2017-01-29
      • 2018-03-15
      • 2018-08-28
      • 2018-10-17
      相关资源
      最近更新 更多