2017-12-31 219 views
0

konnte ich nicht finden, ich folgte diesem guide, Winkel mit .net mvc zu verwenden, aber ich habe keinen Erfolg. Ich habe versucht, diese Lösung unten kann das Problem nicht beheben. Ich habe den Fehler in der DateiDer Name 'PropertyKey' in index.d.ts (MS Visual Studio und eckig)

Typoskript \ node_modules \ @types \ core-js \ index.d.ts

Solution

Hier wird die TSconfig und package.json beide gelegen in der Wurzel des Projekts.

"dependencies": { 
    "@angular/animations": "^5.0.0", 
    "@angular/common": "^5.0.0", 
    "@angular/compiler": "^5.0.0", 
    "@angular/core": "^5.0.0", 
    "@angular/forms": "^5.0.0", 
    "@angular/http": "^5.0.0", 
    "@angular/platform-browser": "^5.0.0", 
    "@angular/platform-browser-dynamic": "^5.0.0", 
    "@angular/router": "^5.0.0", 
    "core-js": "^2.4.1", 
    "rxjs": "^5.5.2", 
    "zone.js": "^0.8.14", 
    "typings": "^1.3.2" 
    } 

TSconfig

{ 
    "compileOnSave": false, 
    "compilerOptions": { 
    "outDir": "./dist/out-tsc", 
    "sourceMap": true, 
    "declaration": false, 
    "moduleResolution": "node", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "target": "es2017", 
    "typeRoots": [ 
     "node_modules/@types" 
    ], 
    "lib": [ 
     "dom", 
     "es2017" 
    ] 
    }, 
    "exclude": [ 
    "node_modules" 
    ] 
} 

Antwort

0

Sie nicht auf der Verpackung @types/core-js abhängen. Es ist fast vollständig redundant mit den offiziellen Typoskript Erklärungen ausdrücklich von

durch enthielten
"lib": ["dom", "es2017"] 

"target": "es2017" 

auch das gleiche bedeutet jedoch unter expliziter Angabe --lib wie Sie getan haben, in guter Praxis ist.

mit den neuesten Erklärungen für das DOM und ECMAScript Durch überlappende APIs, um das @types/core-js Paket, das beschreibt etwa die Struktur des von dem Paket core-js vorgesehen polyfills stellt eine extrem hohe Wahrscheinlichkeit, dass die Erklärungen in Konflikt stehen. Darüber hinaus ist das @types/core-js Paket weit weniger gut gepflegt als die lib.es2017.d.ts Deklarationen, auf die Sie bereits verweisen.

Da Sie Ihre Abhängigkeiten aufgelistet haben und @types/core-js nicht zu ihnen gehört, wird sie wahrscheinlich transitiv installiert. Da es globale Deklarationen enthält, ist dies inhärent problematisch.

Um das Problem zu beheben, legen Sie die "types" Eigenschaft explizit in Ihrem tsconfig.json fest. Dies regelt die Einbeziehung von Paketen durch den TypeScript-Compiler. Hier

ein Beispiel:

{ 
    "compilerOptions": { 
    "types": [], 

    "module": "esnext", 
    "lib": ["dom", "es2017"] 
    } 
} 

Um umfassen globale@types Erklärungen in einer solchen Einrichtung, müssen Sie sie in den neu hinzugefügten Eigenschaft verweisen. Hier

ein Beispiel:

{ 
    "compilerOptions": { 
    "types": ["bootstrap", "mocha"], 

    "module": "esnext", 
    "lib": ["dom", "es2017"] 
    } 
} 

Hinweise:

  1. Achten Sie darauf, die explizit auf irgendwelchen @types Pakete von ihnen mit Ihrem Paketmanager installieren.Sich auf transitive Abhängigkeiten zu verlassen, führt zu nicht-deterministischen Builds, unvorhersehbaren CI-Fehlern und allgemeinem Chaos.

  2. Das Paket @types/core-js enthält Deklarationen für APIs, die über den Umfang von ES2017 hinausgehen. Wenn Sie den Zugriff auf diese Art benötigen, die Spezifikation nummeriert Wert von --lib-esnext wie verändern in

    { 
        "compilerOptions": { 
        "lib": ["dom", "esnext"] 
        } 
    } 
    
  3. Sie haben eine Reihe von veralteten und discrepant Abhängigkeiten. Insbesondere "typings": "^1.3.2", ist sehr alt und sollte aktualisiert werden. typings sollte auch als Entwicklung Abhängigkeit installiert werden, eine Funktion von allen Paket-Managern einschließlich typings selbst unterstützt.

Verwandte Themen