错误“不能将 'new' 与类型缺少调用或构造签名的表达式一起使用。”导入 Esri 类型时
Posted
技术标签:
【中文标题】错误“不能将 \'new\' 与类型缺少调用或构造签名的表达式一起使用。”导入 Esri 类型时【英文标题】: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-api
的 d.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
类型没有构造函数?
【问题讨论】:
【参考方案1】:参数中的Map
是IMap
类型的一个实例。如果您想将其键入为构造函数,请将其键入为typeof IMap
:
bar (Map: typeof IMap)
const map = new Map();
【讨论】:
以上是关于错误“不能将 'new' 与类型缺少调用或构造签名的表达式一起使用。”导入 Esri 类型时的主要内容,如果未能解决你的问题,请参考以下文章
TS2351:不能将“new”与类型缺少调用或构造签名的表达式一起使用。角度 8
远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。
Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误