由于打字,TypeScript编译错误

时间:2016-03-03 15:37:14

标签: typescript typing

我使用的是typescript 1.7.5,类型为0.6.9,角度为2.0.0-beta.0。

由于打字定义文件,如何摆脱打字稿编译错误消息Duplicate identifier

Duplicate identifier错误发生在以下目录的定义文件中:

node_modules/angular2/typings/es6-shim/es6-shim.d.ts
node_modules/angular2/typings/jasmine/jasmine.d.ts
node_modules/angular2/typings/zone/zone.d.ts
typings/browser/ambient/es6-promise/es6-promise.d.ts
typings/browser/ambient/es6-shim/es6-shim.d.ts
typings/browser/ambient/jasmine/jasmine.d.ts
typings/browser/ambient/karma/karma.d.ts
typings/browser/ambient/zone.js/zone.js.d.ts

编译器在node_modules/angular2目录中做了什么,因为我在tsconfig.json中将其排除在外?

I also posted this question on GitHub

tsconfig.json

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

如果我更改exclude的{​​{1}}部分,它们就不见了:

tsconfig.json

但是在添加以下内容之后,我又得到了相同的"exclude": [ "node_modules", "typings" ] 编译错误:

Duplicate identifier

typings.json

/// <reference path="../../typings/browser.d.ts" />

3 个答案:

答案 0 :(得分:4)

对我来说,选择“浏览器”或“主要”(取决于您的应用程序:前端或后端)并排除tsconfig.json中的另一个工作:

  "exclude": [
    "node_modules",
    "wwwroot",
    "typings/main",
    "typings/main.d.ts"
  ]

答案 1 :(得分:3)

  

编译器在node_modules / angular2目录中做了什么,因为我在tsconfig.json中将其排除了

它查看npm模块,因为"moduleResolution": "node",导入的文件(没有排除它会查看所有文件)。

答案 2 :(得分:3)

正如basarat所暗示的那样,你可以改变:

"moduleResolution": "classic",

import

或者您可以简单地从typings文件夹中删除所有重复的输入。发生的事情是,它会自动导入代码中每个browser.d.ts的node_modules文件夹中的所有类型。它还导入了undercore文件依赖项的类型。