Tengo una aplicación vue2 y quiero comenzar a usar TypeScript para algunos archivos de servicios (sin cambiar los archivos js/vue existentes).
Para agregar compatibilidad con TypeScript, utilicé vue-cli y parece funcionar: agregué un archivo myService.ts con una función de TypeScript: myFunction, y dentro de este archivo, vue detecta correctamente los problemas de tipos. También puedo importar este servicio a un archivo de componente vue: myComponent.vue (un componente que contiene código js) y usarlo correctamente.
myFunction se ve así:
function myFunction (x: number, y: number) : number { const a: number = 3 const b: number = 2 return a + b + x + y } Sin embargo, cuando llamo a myFunction desde myComponent.vue con parámetros incorrectos, por ejemplo, myFunction("str1", "str2") , vue no detecta ningún problema, aunque no se deben permitir parámetros de cadena . Puedo ejecutar - npm run serve, y funciona sin generar ninguna advertencia/error.
¿Cómo puedo hacer que vue lo detecte? ¿Es posible detectar problemas de TS desde el interior del código js?
Sí, es posible escribir archivos check js, pero primero debe configurar su tsconfig correctamente.
Todas las opciones disponibles para tsconfig
Que necesitas:
permitirJs
comprobarJs
También puede agregar // @ts-check en la parte superior de cada archivo js que desee escribir check, en lugar de habilitar esta opción para todo el proyecto.
EDITAR:
He leído su comentario más reciente, con eso en mente, hay una buena guía sobre documentos de TS sobre cómo migrar lentamente desde JS .
También estoy agregando aquí dos codesandboxes, uno está construido con una función TS que se usa en JS con @ts-check y @ts-ignores.
El segundo está construido con JsDoc, puede ver que no se verifica sin @ts-check habilitado también, pero he leído que es posible habilitar la verificación de tipos JsDoc si agrega "javascript.implicitProjectConfig.checkJs": true a su Configuración de vscode, aunque no puedo confirmarlo, ya que nunca he usado JsDoc.
Me temo que no hay muchas opciones además de migrar los archivos que necesita a TS y configurar los tipos correctos (o al menos configurar todo para escribir cualquiera solo para calmar a TS), o habilitar @ts-check y agregar @ts-ignore antes de cada línea que no desea que se verifique.