Enumeraciones de cadenas de TypeScript-"Tipo... no es asignable para escribir..."
enums visual-studio-2017 (4)
Este es el error que obtienes al compilar con una versión de mecanografía anterior a 2.4. Todo lo que puedo sugerir es que su copia de Visual Studio de alguna manera está recogiendo su propia versión anterior de mecanografiado en lugar de usar la más nueva instalada en su proyecto. Consulte la wiki https://github.com/Microsoft/TypeScript/wiki/Updating-TypeScript-in-Visual-Studio-2017 para obtener instrucciones sobre cómo actualizar mecanografiado.
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>
Recientemente, actualicé la versión de TypeScript de 2.3.4 a 2.4.0 con la esperanza de utilizar las enumeraciones de cadena . Para mi consternación, sin embargo, me han saludado con los mensajes de error:
Código de gravedad Descripción Error de estado de supresión de línea de archivo de proyecto TS2322 El tipo ''"E"'' no se puede asignar para escribir ''StepType''. ClientApp (proyecto tsconfig) Z: / SMART / Smart / Smart / ClientApp / app / models / process.model.ts 17 Error activo TS2322 Tipo ''"S"'' no es asignable para escribir ''StepType''. ClientApp (proyecto tsconfig) Z: / SMART / Smart / Smart / ClientApp / app / models / process.model.ts 14 Error activo TS2322 Tipo ''"A"'' no es asignable para escribir ''StepType''. ClientApp (proyecto tsconfig) Z: / SMART / Smart / Smart / ClientApp / app / models / process.model.ts 15 Error activo TS2322 Tipo '''' D '''' no es asignable para escribir ''StepType''. ClientApp (proyecto tsconfig) Z: / SMART / Smart / Smart / ClientApp / app / models / process.model.ts 16 Activo
Los mensajes de error se aplican al siguiente fragmento de código (con los números de línea):
13. export enum StepType {
14. Start = ''S'',
15. Activity = ''A'',
16. Decision = ''D'',
17. End = ''E''
18. }
Estoy usando Visual Studio 2017, que afirma que TypeScript 2.4.0 está instalado:
Busqué a través de los problemas de TypeScript , pero sin suerte. ¿Alguien sabe cómo solucionarlo?
Inspirado por la respuesta de Duncan , encontré la causa raíz. Aunque la aplicación usaba TypeScript 2.4, el IntelliSense de VS aún estaba atascado en 2.3.
La forma de resolver el problema fue descargar e instalar TypeScript 2.4 SDK y luego seleccionar de entre las opciones la versión más nueva:
Para mí, el problema era que @angular/cli
estaba usando una versión inferior de Typescript. Revisa tu archivo de bloqueo. Mostraba un requisito de <2.4.0. Nuestro proyecto usa yarn.lock
, por ejemplo.
Cuando se compiló, arrojaba un error relacionado con la versión inferior de Typescript. Para solucionar el problema, agregué la bandera compatible ^
al frente. Entonces, para nosotros, comenzó como:
"@angular/cli": "1.2.5"
...cambiado a:
"@angular/cli": "^1.2.5"
Esto parece solucionar el problema. Vale la pena señalar que esencialmente obliga a cli
a usar la versión del espacio de trabajo de Typescript. Para nosotros, esto es 2.4.0
, que esta versión de cli
no es técnicamente compatible (ya que requiere <2.4.0). Lanza una advertencia al compilar, pero por el momento nos ha funcionado con éxito.
Esto es porque la versión mecanografiada.
Abra el indicador de comando o terminal. luego ejecuta estos comandos.
Verifique la versión de TypeScript
tsc -v
debe ser mayor a 2.4
si no.
instalar la última versión de mecanografiado globalmente
npm install typescript -g
Abra su archivo package.json del proyecto y cambie la versión de mecanografía así con la versión recién instalada
"typescript": "~2.6.1"
A continuación, elimine la carpeta node_modules
Limpiar el caché usando
npm cache clean
Finalmente correr
npm install
* Tenga en cuenta que: Puede actualizar npm usando npm update pero no está seguro de que la versión de mecanografía se actualizará *