J'utilise TypeScript 1.7.5, les saisies 0.6.9 et angular 2.0.0-beta.0.
Comment puis-je me débarrasser des messages d'erreur de compilation de TypeScript Duplicate identifier
en raison de fichiers de définition de typage?
Le Duplicate identifier
une erreur se produit dans les fichiers de définition des répertoires suivants:
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
Que fait le compilateur dans node_modules/angular2
répertoire depuis que je l'ai exclu dans tsconfig.json
?
J'ai aussi posté cette question sur 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"
]
}
Ils sont partis si je change la partie exclude
de tsconfig.json
:
"exclude": [
"node_modules",
"typings"
]
Mais après avoir ajouté ce qui suit, j'obtiens à nouveau le même Duplicate identifier
erreurs de compilation:
/// <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"
}
}
Comme le fait remarquer basarat, vous pouvez soit modifier:
"moduleResolution": "node",
à
"moduleResolution": "classic",
Ou vous pouvez simplement supprimer toutes les saisies en double du dossier des saisies. Ce qui se passe, c'est qu'il importe automatiquement toutes les saisies du dossier node_modules de chaque import
que vous faites dans votre code. Il importe également les typages qui sont des dépendances de browser.d.ts
fichier.
Pour moi, choisir soit 'navigateur' soit 'principal' (selon votre application: front end ou back end) et exclure l'autre dans tsconfig.json
travaillé:
"exclude": [
"node_modules",
"wwwroot",
"typings/main",
"typings/main.d.ts"
]
Que fait le compilateur dans le répertoire node_modules/angular2 depuis que je l'ai exclu dans tsconfig.json
Son examen des modules npm en raison de "moduleResolution": "node",
mais seulement les fichiers qui sont importés (sans l'exclure, il regarderait tous les fichiers).