web-dev-qa-db-fra.com

Erreur de compilation TypeScript due à des saisies

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"
  }
}
14
Herman Fransen

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.

3
rgvassar

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"
  ]
4
fikkatra

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).

3
basarat