4

我有一个基于这个种子项目的 nodeJS 项目。它有两个tsconfig.json文件,如下所示:

{
    "compilerOptions": {
        "target": "es6",
        "module": "system",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false
    },
    "exclude": [
        "../node_modules"
    ]
}

然而,尽管排除了 node_modules,我还是得到了很多错误,其中一些我在下面显示。自从我开始使用新npm i @types/xyz方法以来就发生了这种情况。

[0] node_modules/@types/core-js/index.d.ts(21,14):错误 TS2300:重复标识符“PropertyKey”。

[0] node_modules/@types/core-js/index.d.ts(85,5):错误 TS2687:“名称”的所有声明必须具有相同的修饰符。

[0] node_modules/@types/core-js/index.d.ts(145,5):错误TS2403:后续变量声明必须具有相同的类型。变量 '[Symbol.unscopables]' 必须是类型 '{ copyWithin: boolean; 条目:布尔值;填充:布尔值;查找:布尔值;findIndex:布尔值;键:...',但这里有类型'any'。

[0] node_modules/@types/core-js/index.d.ts(262,5):错误 TS2687:“标志”的所有声明必须具有相同的修饰符。

[0] node_modules/@types/core-js/index.d.ts(276,5):错误 TS2687:“EPSILON”的所有声明必须具有相同的修饰符。

[0] node_modules/@types/core-js/index.d.ts(311,5):错误 TS2687:“MAX_SAFE_INTEGER”的所有声明必须具有相同的修饰符。

4

4 回答 4

4

在使用 anguler2 项目升级到 ts2.0 后,我刚刚遇到了这个问题。我现在正在使用typings并且有很多依赖项。其中至少有一个包含@types,它复制了一些导入。但它们是必需的,我不能只删除文件夹/依赖项(就像其他人建议的那样)。

在这里,我找到了一个指向对我有帮助的解决方案的指针: https ://github.com/Microsoft/TypeScript/issues/11257

来自 lucassp 的样本:

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false,
        "types": []
    },
    "exclude": [
        "../node_modules"
    ]
}

我只需要添加"types": []到 tsconfig.json 文件中,这使得它不包含 @types 中的任何类型(因为它们目前都由类型管理)。

以下是 doc中编译器选项的描述:

--types string[]
List of names of type definitions to include. See @types, –typeRoots and –types for more details.

微软似乎认为 @types 是新的黑色打字稿定义导入。在此处阅读更多信息。

最终我可能会迁移,但我会先让尘埃落定。

于 2016-11-16T08:30:35.423 回答
1

我遇到了同样的错误。我没有使用显式@types/*声明。但是,看起来更新包已将它们添加为依赖项。

通过typings.json. 基本上,任何处于下的声明都不node_modules/@types/应该在.typings.json

不要忘记typings prune在更新typings.json文件后运行,以便删除额外的类型。

于 2016-10-03T22:38:24.503 回答
0

我之前在我的项目中注意到了重复标识符问题。我偶然做的是我通过 npm 在我的项目的子目录中安装了一个包。我不得不删除node_modules那里生成的子目录来修复它。

您的错误也类似于我在这里找到的这篇文章

海报提出以下建议:

从 package.json 中删除 @types/core-js,删除 node_modules 和 npm 安装解决了这个问题。

于 2016-09-30T11:30:00.013 回答
0

我有各种各样的类似问题;但我从 %localappdata%\Microsoft\Typescript 中删除了整个 Typescript 文件夹

然后,我跑了:

npm install -g typescript@2.1

它神奇地重新开始工作......

我确实也重启了几次VS2017,并多次删除了我的解决方案node_modules......这些帮助了我的挫败感,但没有提供解决方案。

于 2017-02-20T13:54:54.573 回答