Me da curiosidad *.d.ts
porque soy un novato en TypeScript. Y alguien me dijo que este tipo de archivo es algo así como "archivo principal" en C ++ pero solo para JS. Pero no puedo convertir un archivo JS puro para *.d.ts
archivo a menos que cambiar el forcely *.js
a *.ts
. Entonces tengo tres archivos: un archivo JS, un archivo TS y un *.d.ts
archivo.
¿Cuál es la relación entre ellos?
¿Cómo puedo usar el
*.d.ts
archivo? ¿Significa que puedo eliminar el*.ts
archivo de forma permanente?Si es así, ¿cómo puede
*.d.ts
saber el archivo qué archivo JS se está asignando a sí mismo?
Sería muy bueno si alguien me puede dar un ejemplo.
typescript
.d.ts
iliketocode
fuente
fuente
Respuestas:
El archivo "d.ts" se utiliza para proporcionar información de tipo de mecanografiado sobre una API escrita en JavaScript. La idea es que esté usando algo como jQuery o subrayado, una biblioteca javascript existente. Desea consumirlos de su código mecanografiado.
En lugar de reescribir jquery o subrayado o lo que sea en mecanografiado, puede escribir el archivo d.ts, que contiene solo las anotaciones de tipo. Luego, a partir de su código mecanografiado, obtiene los beneficios mecanografiados de la verificación estática de tipos mientras sigue utilizando una biblioteca JS pura.
fuente
d
significa archivos de declaración :fuente
typings
herramienta de línea de comando no es realmente necesaria desde TypeScript 2.0. El enfoque más actualizado es utilizar envoltorios de escritura a través del repositorio npm bajo el@types
espacio de nombres. Para obtener más detalles, consulte github.com/typings/typings/blob/master/README.mdNo pude comentar y, por lo tanto, estoy agregando esto como respuesta.
Tuvimos algunos problemas al tratar de asignar tipos existentes a una biblioteca de JavaScript.
Para asignar un
.d.ts
archivo a su archivo javascript, debe darle al.d.ts
archivo el mismo nombre que el archivo javascript, mantenerlos en la misma carpeta y señalar el código que lo necesita al.d.ts
archivo.por ejemplo:
test.js
ytest.d.ts
están en latestdir/
carpeta, luego la importas así en un componente de reacción:El
.d.ts
archivo se exportó como un espacio de nombres como este:fuente
.d.ts
archivo también debe tener el mismo nombre que el paquete que se va a importar.Ejemplo resuelto para un caso específico :
Digamos que tiene mi módulo que está compartiendo a través de npm .
Lo instalas con
npm install my-module
Lo usas así:
La lógica del módulo está todo en
index.js
:Para agregar tipings, cree un archivo
index.d.ts
:fuente
Como @takeshin dijo .d significa archivo de declaración para mecanografiado (.ts).
Pocos puntos por aclarar antes de responder esta publicación:
Si está pensando si el mecanografiado es solo un superconjunto sintáctico, ¿qué beneficios ofrece? Https://basarat.gitbooks.io/typescript/docs/why-typescript.html#the-typescript-type-system
Para responder esta publicación:
Como discutimos, el mecanografiado es un superconjunto de javascript y necesita ser transpuesto a javascript. Entonces, si una biblioteca o código de terceros está escrito en mecanografiado, eventualmente se convierte a javascript, que puede ser usado por un proyecto javascript pero viceversa no es cierto.
Por ex -
Si instala la biblioteca javascript -
e intente importarlo en código mecanografiado -
Obtendrás un error.
Como mencionó @Chris, muchas bibliotecas como el subrayado, Jquery ya están escritas en JavaScript. En lugar de volver a escribir esas bibliotecas para proyectos mecanografiados, se necesitaba una solución alternativa.
Para hacer esto, puede proporcionar un archivo de declaración de tipo en la biblioteca javascript llamada * .d.ts, como en el caso anterior mylib.d.ts. El archivo de declaración solo proporciona declaraciones de tipo de funciones y variables definidas en el archivo javascript respectivo.
Ahora cuando lo intentas ...
mylib.d.ts se importa, lo que actúa como una interfaz entre el código de la biblioteca de JavaScript y el proyecto de mecanografía.
fuente
Esta respuesta supone que tiene algo de JavaScript que no desea convertir a TypeScript, pero desea beneficiarse de la verificación de tipos con cambios mínimos en su
.js
. UNA.d.ts
archivo es muy parecido a un archivo de encabezado C o C ++. Su propósito es definir una interfaz. Aquí hay un ejemplo:mashString.d.ts
mashString.js
main.js
La relación aquí es:
mashString.d.ts
define una interfaz,mashString.js
implementa la interfaz ymain.js
usa la interfaz.Para que el tipo de verificación funcione, agregue
// @ts-check
a sus.js
archivos. Pero esto solo comprueba quemain.js
usa la interfaz correctamente. Para garantizar también que lomashString.js
implemente correctamente, agregamos/** @type {import("./mashString")} */
antes de la exportación.Puede crear sus
.d.ts
archivos iniciales usandotsc -allowJs main.js -d
luego editarlos según sea necesario manualmente para mejorar la verificación de tipo y la documentación.En la mayoría de los casos, la implementación y la interfaz tienen el mismo nombre, aquí
mashString
. Pero puedes tener implementaciones alternativas. Por ejemplo, podemos cambiar el nombremashString.js
dereverse.js
y tienen una alternativaencryptString.js
.fuente