TypeScript 2.0会从排除的文件中引发错误吗?

时间:2016-09-29 16:29:06

标签: node.js typescript typescript-typings typescript2.0

我有一个基于this种子项目的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:'name'的所有声明必须具有相同的修饰符。

     

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

     

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

     

[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 个答案:

答案 0 :(得分:3)

我在使用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中的所有类型(因为它们都是由当前的typing管理的。)

这里是编译器选项from the doc的描述:

--types string[]
List of names of type definitions to include. See @types, –typeRoots and –types for more details.
微软似乎认为@types是新的黑色打字稿定义导入。阅读有关此here的更多信息。

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

答案 1 :(得分:0)

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

此外,您的错误与我发现here

的帖子相似

海报建议如下:

  

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

答案 2 :(得分:0)

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

我通过删除typings.json 中的条目来消除这些错误。基本上,任何node_modules/@types/下的声明都应 typings.json中重复。

在更新typings prune文件后忘记运行typings.json,以便删除额外的内容。

答案 3 :(得分:0)

我对所有类似问题进行了分类;但我从%localappdata%\ Microsoft \ Typescript

中删除了整个Typescript文件夹

然后,我跑了:

npm install -g typescript@2.1

神奇的一切都开始了......

我也多次重启VS2017,并多次删除我的解决方案node_modules ......这些让我感到沮丧,但没有提供解决方案。