输入' SymbolConstructor'没有兼容的呼叫签名

时间:2017-07-23 13:45:30

标签: typescript typescript-typings

我正在关注此github repository

中的示例

我的代码是

const TYPES = {
    UserService: Symbol("UserService")
};

export default TYPES;

Visual Studio代码intellisense为上面的代码提供了以下错误。

  

message:'无法调用类型缺少调用的表达式   签名。输入' SymbolConstructor'没有兼容的电话   签名' at:' 3,18'来源:' ts'

符号定义

interface SymbolConstructor {
    readonly iterator: symbol;
}
declare var Symbol: SymbolConstructor;

此符号定义在@ types / node index.d.ts中定义。当我通过visual studio code intellisense导航到Symbol定义时,它将我带到文件@types/node index.d.ts.

我只是复制粘贴我之前提到的存储库中的代码。所以没有变化。我还检查了我安装的软件包,以确保我安装了repo中的所有内容。 一切看起来都一样。

我对打字稿很新。我查看了一些链接

link 1link 2。但我无法理解这一点。任何人都可以澄清这个错误即将到来的原因吗?

2 个答案:

答案 0 :(得分:0)

我发现了我犯的错误。

我查看了存储库here。唯一的变化在于tsconfig文件

在我的tsconfig中,我有这一行

  

“types”:[“reflect-metadata”]

因此编译器只能查看@ types / node定义。但是当我删除它时,编译器能够从这里找到一些其他定义lib.es2015.symbol.d.ts

此文件存在于此处

  

/ Applications / Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/lib.es2015.symbol.d.ts

现在,从我的tsconfig文件

中的类型中删除“reflect-metadata”时出现错误

答案 1 :(得分:0)

遇到此问题时,我发现自己忽略了将"lib": ["es6"]添加到我的tsconfig.json文件中。

对此设置in this answer有很好的说明。