Je me sens curieux *.d.ts
parce que je suis un débutant en TypeScript. Et quelqu'un m'a dit que ce type de fichier est quelque chose comme "fichier principal" en C ++ mais uniquement pour JS. Mais je ne peux pas convertir un fichier JS pur en *.d.ts
fichier sauf si je change de force le *.js
en *.ts
. J'ai donc trois fichiers: un fichier JS, un fichier TS et un *.d.ts
fichier.
Quelle est la relation entre eux?
Comment utiliser le
*.d.ts
fichier? Cela signifie-t-il que je peux supprimer le*.ts
fichier de façon permanente?Si oui, comment le
*.d.ts
fichier peut-il savoir quel fichier JS est mappé sur lui-même?
Ce serait très bien si quelqu'un pouvait me donner un exemple.
typescript
.d.ts
iliketocode
la source
la source
Réponses:
Le fichier "d.ts" est utilisé pour fournir des informations de type tapuscrit sur une API écrite en JavaScript. L'idée est que vous utilisez quelque chose comme jQuery ou underscore, une bibliothèque javascript existante. Vous voulez consommer ceux de votre code tapuscrit.
Plutôt que de réécrire jquery ou underscore ou quoi que ce soit en tapuscrit, vous pouvez à la place écrire le fichier d.ts, qui ne contient que les annotations de type. Ensuite, à partir de votre code tapuscrit, vous bénéficiez des avantages tapuscript de la vérification de type statique tout en utilisant une bibliothèque JS pure.
la source
d
signifie fichiers de déclaration :la source
typings
outil de ligne de commande n'est pas vraiment nécessaire depuis TypeScript 2.0. L'approche la plus récente consiste à utiliser des wrappers de frappe via le référentiel npm sous l'@types
espace de noms. Pour plus de détails, voir github.com/typings/typings/blob/master/README.mdJe ne pouvais pas commenter et j'ajoute donc ceci comme réponse.
Nous avons eu du mal à mapper les types existants sur une bibliothèque javascript.
Pour mapper un
.d.ts
fichier à son fichier javascript, vous devez donner au.d.ts
fichier le même nom que le fichier javascript, les conserver dans le même dossier et pointer le code qui en a besoin vers le.d.ts
fichier.par exemple:
test.js
ettest.d.ts
sont dans letestdir/
dossier, alors vous l'importez comme ceci dans un composant React:Le
.d.ts
fichier a été exporté en tant qu'espace de noms comme ceci:la source
.d.ts
fichier doit également être nommé de la même manière que le package à importer.Exemple travaillé pour un cas spécifique :
Disons que vous avez mon module que vous partagez via npm .
Vous l'installez avec
npm install my-module
Vous l'utilisez ainsi:
La logique du module est tout en
index.js
:Pour ajouter des saisies, créez un fichier
index.d.ts
:la source
Comme @takeshin l'a dit .d signifie fichier de déclaration pour dactylographié (.ts).
Peu de points à clarifier avant de répondre à ce post -
Si vous pensez que le typage n'est qu'un sur-ensemble syntaxique, quels avantages offre-t-il - https://basarat.gitbooks.io/typescript/docs/why-typescript.html#the-typescript-type-system
Pour répondre à ce message -
Comme nous en avons discuté, le tapuscrit est un surensemble de javascript et doit être transposé en javascript. Donc, si une bibliothèque ou un code tiers est écrit en texte dactylographié, il est finalement converti en javascript qui peut être utilisé par le projet javascript mais vice versa ne se vérifie pas.
Par exemple -
Si vous installez la bibliothèque javascript -
et essayez de l'importer en code dactylographié -
vous obtiendrez une erreur.
Comme mentionné par @Chris, de nombreuses bibliothèques comme le soulignement, Jquery sont déjà écrites en javascript. Plutôt que de réécrire ces bibliothèques pour des projets dactylographiés, une solution alternative était nécessaire.
Pour ce faire, vous pouvez fournir un fichier de déclaration de type dans la bibliothèque javascript nommée * .d.ts, comme dans le cas précédent mylib.d.ts. Le fichier de déclaration fournit uniquement des déclarations de type de fonctions et de variables définies dans le fichier javascript respectif.
Maintenant, quand vous essayez -
mylib.d.ts est importé, ce qui sert d'interface entre le code de bibliothèque javascript et le projet dactylographié.
la source
Cette réponse suppose que vous avez du JavaScript que vous ne souhaitez pas convertir en TypeScript, mais que vous souhaitez bénéficier de la vérification de type avec des modifications minimales de votre
.js
. Un.d.ts
fichier ressemble beaucoup à un fichier d'en-tête C ou C ++. Son but est de définir une interface. Voici un exemple:mashString.d.ts
mashString.js
main.js
La relation ici est:
mashString.d.ts
définit une interface,mashString.js
implémente l'interface etmain.js
utilise l'interface.Pour que la vérification de type fonctionne, vous ajoutez
// @ts-check
à vos.js
fichiers. Mais cela ne vérifie quemain.js
l'utilisation correcte de l'interface. Pour garantir également qu'ilmashString.js
implémente correctement, nous ajoutons/** @type {import("./mashString")} */
avant l'exportation.Vous pouvez créer vos
.d.ts
fichiers initiaux à l'aidetsc -allowJs main.js -d
puis les modifier manuellement si nécessaire pour améliorer la vérification de type et la documentation.Dans la plupart des cas, l'implémentation et l'interface ont le même nom, ici
mashString
. Mais vous pouvez avoir des implémentations alternatives. Par exemple , nous pourrions renommermashString.js
pourreverse.js
et avoir une alternativeencryptString.js
.la source