由于打字导致的 TypeScript 编译错误
TypeScript compile error due to typings
我正在使用 typescript 1.7.5,打字 0.6.9 和 angular 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"
]
}
如果我更改 tsconfig.json
的 exclude
部分,它们就会消失:
"exclude": [
"node_modules",
"typings"
]
但是在添加以下内容后,我再次遇到相同的 Duplicate identifier
编译错误:
/// <reference path="../../typings/browser.d.ts" />
typings.json
{
"name": "example-mean-app-client",
"dependencies": {},
"devDependencies": {},
"ambientDependencies": {
"bootstrap": "github:DefinitelyTyped/DefinitelyTyped/bootstrap/bootstrap.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
"es6-promise": "github:DefinitelyTyped/DefinitelyTyped/es6-promise/es6-promise.d.ts#830e8ebd9ef137d039d5c7ede24a421f08595f83",
"es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#dd638012d63e069f2c99d06ef4dcc9616a943ee4",
"karma": "github:DefinitelyTyped/DefinitelyTyped/karma/karma.d.ts#02dd2f323e1bcb8a823269f89e0909ec9e5e38b5",
"karma-jasmine": "github:DefinitelyTyped/DefinitelyTyped/karma-jasmine/karma-jasmine.d.ts#661e01689612eeb784e931e4f5274d4ea5d588b7",
"systemjs": "github:DefinitelyTyped/DefinitelyTyped/systemjs/systemjs.d.ts#83af898254689400de8fb6495c34119ae57ec3fe",
"zone.js": "github:DefinitelyTyped/DefinitelyTyped/zone.js/zone.js.d.ts#9027703c0bd831319dcdf7f3169f7a468537f448"
}
}
What's the compiler doing in node_modules/angular2 directory since I excluded it in tsconfig.json
它正在查看 npm 模块,因为 "moduleResolution": "node",
但 仅 导入的文件(没有排除它会查看 all 文件)。
正如 basarat 所暗示的,您可以更改:
"moduleResolution": "node",
到
"moduleResolution": "classic",
或者您可以简单地从打字文件夹中删除所有重复的打字。发生的事情是它会自动从您在代码中执行的每个 import
的 node_modules 文件夹中导入所有类型。它还导入了 browser.d.ts
文件的依赖项。
对我来说,选择 'browser' 或 'main'(取决于您的应用程序:前端或后端)并排除 tsconfig.json
中的另一个有效:
"exclude": [
"node_modules",
"wwwroot",
"typings/main",
"typings/main.d.ts"
]
我正在使用 typescript 1.7.5,打字 0.6.9 和 angular 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"
]
}
如果我更改 tsconfig.json
的 exclude
部分,它们就会消失:
"exclude": [
"node_modules",
"typings"
]
但是在添加以下内容后,我再次遇到相同的 Duplicate identifier
编译错误:
/// <reference path="../../typings/browser.d.ts" />
typings.json
{
"name": "example-mean-app-client",
"dependencies": {},
"devDependencies": {},
"ambientDependencies": {
"bootstrap": "github:DefinitelyTyped/DefinitelyTyped/bootstrap/bootstrap.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
"es6-promise": "github:DefinitelyTyped/DefinitelyTyped/es6-promise/es6-promise.d.ts#830e8ebd9ef137d039d5c7ede24a421f08595f83",
"es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#dd638012d63e069f2c99d06ef4dcc9616a943ee4",
"karma": "github:DefinitelyTyped/DefinitelyTyped/karma/karma.d.ts#02dd2f323e1bcb8a823269f89e0909ec9e5e38b5",
"karma-jasmine": "github:DefinitelyTyped/DefinitelyTyped/karma-jasmine/karma-jasmine.d.ts#661e01689612eeb784e931e4f5274d4ea5d588b7",
"systemjs": "github:DefinitelyTyped/DefinitelyTyped/systemjs/systemjs.d.ts#83af898254689400de8fb6495c34119ae57ec3fe",
"zone.js": "github:DefinitelyTyped/DefinitelyTyped/zone.js/zone.js.d.ts#9027703c0bd831319dcdf7f3169f7a468537f448"
}
}
What's the compiler doing in node_modules/angular2 directory since I excluded it in tsconfig.json
它正在查看 npm 模块,因为 "moduleResolution": "node",
但 仅 导入的文件(没有排除它会查看 all 文件)。
正如 basarat 所暗示的,您可以更改:
"moduleResolution": "node",
到
"moduleResolution": "classic",
或者您可以简单地从打字文件夹中删除所有重复的打字。发生的事情是它会自动从您在代码中执行的每个 import
的 node_modules 文件夹中导入所有类型。它还导入了 browser.d.ts
文件的依赖项。
对我来说,选择 'browser' 或 'main'(取决于您的应用程序:前端或后端)并排除 tsconfig.json
中的另一个有效:
"exclude": [
"node_modules",
"wwwroot",
"typings/main",
"typings/main.d.ts"
]