javascript - used - Los ''tipos'' de js solo pueden usarse en un archivo.ts-Visual Studio Code usando @ ts-check
visual studio code typescript auto compile (3)
Estoy empezando a usar TypeScript en un proyecto Node en el que estoy trabajando en Visual Studio Code.
Quería seguir la estrategia "opt-in", similar a Flow.
Por lo tanto, pongo
// @ts-check
en la parte superior de mi archivo
.js
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 como:
// @ts-check
module.exports = {
someMethod: (param: string): string => {
return param;
},
};
y mi archivo
tsconfig.json
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é establecer
tslint.jsEnable
en
true
en mi configuración de vscode como se menciona en los documentos de extensión de TSLint, pero no tuve suerte.
¿Cuál es la configuración correcta para usar archivos
.js
con TypeScript y obtener Intellisense para saber cuáles son los errores en mi código antes de ejecutar cualquier comando TS?
Debe usar un archivo
.ts
, por ejemplo,
test.ts
para obtener la
validación de
test.ts
, la
typing
inteligente de vars, los tipos de retorno, así como la verificación de errores "tipeados" (por ejemplo, pasar una
string
a un método que espera que un parámetro
number
produzca un error) .
Se trasladará a (estándar)
.js
través de
tsc
.
Actualización (11/2018):
Se necesita una aclaración basada en votos negativos, comentarios muy útiles y otras respuestas.
types
-
Sí, puede hacer una verificación de
type
en VS Code en archivos.js
con@ts-check
, como se muestra en la animación -
A lo que originalmente me refería para los
types
Scripttypes
es algo como esto en.ts
que no es exactamente lo mismo:hello-world.ts
function hello(str: string): string { return 1; } function foo(str:string):void{ console.log(str); }
Esto no se compilará.
Error: Type "1" is not assignable to String
-
si probó esta sintaxis en un archivo Javascript
hello-world.js
://@ts-check function hello(str: string): string { return 1; } function foo(str:string):void{ console.log(str); }
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 cubre esto, así como el contexto del OP, agregue. Aprendamos todos.
Estoy usando @flow con vscode pero tuve el mismo problema.
Lo resolví con estos pasos:
- instale la extensión Flow Language Support
- deshabilite la extensión TypeScript incorporada:
Cómo deshabilitar TypeScript incorporado:
- ir a la pestaña de extensiones
- buscar @builtin TypeScript y JavaScript Language Features
- haga clic en Desactivar
Use
"javascript.validate.enable": false
en la configuración de su código VS, no deshabilita ESLINT.
Yo uso ESLINT y Flow.
Simplemente siga las instrucciones de
Flujo para la configuración del código Vs
Agregando esta línea en settings.json.
Ayuda a
"javascript.validate.enable": false