37 votes

Tapuscrit de la chaîne des enums - Type " ... n'est pas cessible à taper ..."

J'ai récemment mis à jour la version de la Machine à partir 2.3.4 2.4.0 espèrent utiliser la chaîne des enums. À mon grand désarroi, cependant, j'ai été accueilli avec les messages d'erreur:

Severity  Code    Description Project File    Line    Suppression State
Error TS2322  Type '"E"' is not assignable to type
'StepType'.   ClientApp (tsconfig
project)  Z:\SMART\Smart\Smart\ClientApp\app\models\process.model.ts  17  Active
Error TS2322  Type '"S"' is not assignable to type
'StepType'.   ClientApp (tsconfig
project)  Z:\SMART\Smart\Smart\ClientApp\app\models\process.model.ts  14  Active
Error TS2322  Type '"A"' is not assignable to type
'StepType'.   ClientApp (tsconfig
project)  Z:\SMART\Smart\Smart\ClientApp\app\models\process.model.ts  15  Active
Error TS2322  Type '"D"' is not assignable to type
'StepType'.   ClientApp (tsconfig
project)  Z:\SMART\Smart\Smart\ClientApp\app\models\process.model.ts  16  Active

Les messages d'erreur s'appliquent à l'extrait de code suivant (avec les numéros de ligne):

13. export enum StepType {
14.    Start = 'S',
15.    Activity = 'A',
16.    Decision = 'D',
17.    End = 'E'
18. }

Je suis à l'aide de Visual Studio 2017 qui revendique Tapuscrit 2.4.0 est installé:

enter image description here

J'ai cherché par le biais de la Machine de questions, mais sans succès. Quelqu'un sait comment résoudre ce problème?

30voto

C'est parce que tapuscrit version.

Ouvrez l'invite de commande ou d'un terminal. ensuite, exécutez ces commandes.

Vérifier Tapuscrit version

tsc -v

doit être supérieur à 2.4

si pas.

installer la dernière version de la machine à l'échelle mondiale

npm install typescript -g

Ouvrez votre paquet.fichier json du projet et le changement tapuscrit version comme ceci avec la version nouvellement installée

"typescript": "~2.6.1"

Puis supprimer le dossier node_modules

Nettoyer le cache à l'aide de

npm cache clean

Enfin exécuter

npm install

*Remarque: Vous pouvez mettre à jour mnp à l'aide de mnp mise à jour , mais il n'est pas sûr que le tapuscrit version sera mise à jour *

8voto

Duncan Points 25356

C'est l'erreur que vous obtenez lors de la compilation avec une version de la machine âgés de plus de 2.4. Tout ce que je peux suggérer, c'est que votre copie de Visual Studio est en quelque sorte ramasser ses propres ancienne version de la machine plutôt que d'utiliser la plus récente installée dans votre projet. Voir le wiki https://github.com/Microsoft/TypeScript/wiki/Updating-TypeScript-in-Visual-Studio-2017 pour obtenir des instructions sur la mise à jour de la machine.

PS C:\temp> cat t.ts
enum StepType {
    Start = 'S',
    Activity = 'A',
    Decision = 'D',
    End = 'E'
}
PS C:\temp> node somepath\node_modules\typescript\bin\tsc --version
Version 2.2.2
PS C:\temp> node somepath\node_modules\typescript\bin\tsc t.ts
t.ts(2,13): error TS2322: Type '"S"' is not assignable to type 'StepType'.
t.ts(3,16): error TS2322: Type '"A"' is not assignable to type 'StepType'.
t.ts(4,16): error TS2322: Type '"D"' is not assignable to type 'StepType'.
t.ts(5,11): error TS2322: Type '"E"' is not assignable to type 'StepType'.
PS C:\temp> tsc --version
Version 2.4.1
PS C:\temp> tsc t.ts
PS C:\temp>

5voto

Dawid O Points 3504

Inspiré par Duncan réponse, j'ai trouvé la cause. Bien que l'application a l'aide de la Machine 2.4, VS l'IntelliSense était encore coincé dans 2.3. VS IntelliSense was not updated

La façon de résoudre le problème est de télécharger et d'installer la Machine 2.4 SDK , puis sélectionnez l'une des options de la version la plus récente:

enter image description here

1voto

kbpontius Points 2378

Pour moi, le problème était qu' @angular/cli a l'aide d'une version inférieure de la Machine. Découvrez votre fichier de verrouillage. Il a été montré une exigence de <2.4.0. Notre projet utilise l' yarn.lock, par exemple.

Lorsqu'il est compilé, il jetait une erreur liée à la version basse de la Machine. Pour résoudre le problème, j'ai ajouté le drapeau compatible ^ à l'avant. Donc, pour nous, il a commencé comme:

"@angular/cli": "1.2.5"

...changé:

"@angular/cli": "^1.2.5"

Cela semble résoudre le problème. Il est intéressant de noter que l'essentiel des forces cli à utiliser l'espace de travail version du Tapuscrit. Pour nous, c'est - 2.4.0, dont cette version de cli n'est pas techniquement compatible avec (car elle nécessite l' <2.4.0). Il lance un avertissement lors de la compilation, mais il a travaillé avec succès pour nous pour le moment.

0voto

Gene Points 398

J'ai eu les mêmes problèmes pour mon Angular2 projet. J'avais besoin de mettre à jour le fichier d'enregistrement (TS) la bibliothèque de mon Angular2 projet.

1) à l'Intérieur de votre colis.json, ajoutez à cela le "devDependencies" de la section:

"ts-node": "~3.2.0",
"tslint": "~5.7.0",
"typescript": "~2.4.2"

Le mien ressemble à:

  "devDependencies": {
    "@angular/compiler-cli": "^2.3.1",
    "@types/jasmine": "2.5.38",
    "@types/node": "^6.0.42",
    "angular-cli": "1.0.0-beta.28.3",
    "codelyzer": "~2.0.0-beta.1",
    "jasmine-core": "2.5.2",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-remap-istanbul": "^0.2.1",
    "protractor": "~4.0.13",
    "ts-node": "~3.2.0",
    "tslint": "~5.7.0",
    "typescript": "~2.4.2"
  }

2) Supprimer "node_modules" package et le "paquet serrure.json" fichier de votre projet.

3) Faire "npm install" sur votre ligne de commande pour installer tous les nouveaux TS les bibliothèques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X