Estoy empezando a usar TypeScript en un proyecto de Node en el que estoy trabajando en Visual Studio Code. Quería seguir la estrategia "opt-in", similar a Flow. Por lo tanto, puse // @ts-check
en la parte superior de mi .js
archivo con la esperanza de habilitar TS para ese archivo. En última instancia, quiero la misma experiencia de "linting" que Flow, por lo tanto, instalé el complemento TSLint para poder ver las advertencias / errores de Intellisense.
Pero con mi archivo luciendo así:
// @ts-check
module.exports = {
someMethod: (param: string): string => {
return param;
},
};
y mi tsconfig.json
archivo parece ...
{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"allowJs": true
}
}
Recibo este error: [js] 'types' can only be used in a .ts file.
como se muestra a continuación en la imagen.
Vi esta pregunta que recomendaba deshabilitar la validación de JavaScript en vscode, pero eso no me muestra ninguna información de TypeScript Intellisense.
Intenté fijar tslint.jsEnable
a true
en la configuración de mi vscode como se menciona en los documentos de extensión TSLint pero no hay suerte.
¿Cuál es la configuración correcta para usar .js
archivos con TypeScript y obtener Intellisense para saber cuáles son los errores en mi código antes de ejecutar cualquier comando de TS?
.ts
mostrarme los errores / advertencias de TS como se esperaba. Supongo que esto podría funcionar, pero esperaba que se usara más el método de suscripción@ts-check
mientras mantenía todas mis extensiones como.js
Respuestas:
Estoy usando @flow con vscode pero tuve el mismo problema.
fuente
"javascript.validate.enable": false
Úselo
"javascript.validate.enable": false
en la configuración de su código VS, no deshabilita ESLINT. Utilizo tanto ESLINT como Flow. Simplemente siga las instrucciones Flow For Vs Code SetupAñadiendo esta línea en settings.json. Ayuda
"javascript.validate.enable": false
fuente
Include Languages Enable Emmet abbreviations in languages that are not supported by default. Add a mapping here between the language and emmet supported language. E.g.: {"vue-html": "html", "javascript": "javascriptreact"}
haga clic en Editar en settings.json y añadir lo siguiente:"javascript.validate.enable": false
.Debe usar un
.ts
archivo, por ejemplo,test.ts
para obtener lavalidación deTypeScript, intellisensetyping
de vars, tipos de retorno, así como la verificación de errores "escritos" (por ejemplo, pasar unstring
a un método que espera que unnumber
parámetro genere un error).Se transpilará en (estándar) a
.js
través detsc
.Actualización (11/2018):
Se necesita una aclaración basada en votos negativos, comentarios muy útiles y otras respuestas.
types
Sí, puede
type
verificar VS Code en.js
archivos con@ts-check
, como se muestra en la animaciónLo que originalmente me refería para Typecript
types
es algo como esto en el.ts
que no es exactamente lo mismo:hello-world.ts
Esto no se compilará.
Error: Type "1" is not assignable to String
si probó esta sintaxis en un archivo Javascript
hello-world.js
:Se muestra el mensaje de error al que hace referencia OP:
[js] 'types' can only be used in a .ts file
Si hay algo que me perdí que cubra esto así como el contexto del OP, por favor agregue. Aprendamos todos.
fuente
.ts
. IINM, las muestras muestran comprobación de errores e intellisense . El problema que tiene es (estática)type
ing sus variables, y el retornotypes
también - por ejemplofoo:string
,bar:number
,fubar:MyClass
,myMethod(f:Array):void
,anotherMethod():string
. Hth ...@ts-check
atributo. Muy engañoso ...Para cualquiera que aterrice aquí y todas las otras soluciones no funcionaron, pruebe esto. Estoy usando mecanografiado + reacciono y mi problema era que yo era asociar los archivos de vscode como
javascriptreact
notypescriptreact
a fin de comprobar la configuración de las siguientes entradas.fuente