Según ce Le système de typage de l'article pour Typescript 2.0 a été modifié et il n'est pas clair comment attacher des typages personnalisés maintenant. Dois-je toujours créer un paquet NPM pour cela ?
Merci d'avance !
Según ce Le système de typage de l'article pour Typescript 2.0 a été modifié et il n'est pas clair comment attacher des typages personnalisés maintenant. Dois-je toujours créer un paquet NPM pour cela ?
Merci d'avance !
Vous pouvez créer des typages locaux personnalisés juste pour votre projet, où vous pouvez déclarer des types pour les bibliothèques JS. Pour cela, vous devez :
Créez une structure de répertoire pour conserver vos fichiers de déclaration de type de sorte que votre structure de répertoire ressemble à ceci :
.
custom_typings
some-js-lib
index.d.ts
tsconfig.json
Dans le index.d.ts
ajoutez une déclaration pour votre bibliothèque JS :
declare module 'some-js-lib' {
export function hello(world: string): void
}
(Facultatif : passez si vous avez TypeScript >= 4.x) Ajoutez une référence à cette déclaration de type dans le fichier compilerOptions
de votre tsconfig.json
:
{
"compilerOptions": {
...
"typeRoots": ["./node_modules/@types", "./custom_typings"]
},
...
}
Utilisez le module déclaré dans votre code :
import { hello } from 'some-js-lib'
hello('world!')
Je ne suis pas sûr que l'étape 3 soit nécessaire. Cela semble fonctionner pour moi sans cette étape. Il semble aussi que index.d.ts
o declarations.d.ts
peut aller n'importe où dans le projet.
L'étape 3 est nécessaire, mais vous devez seulement spécifier "typeRoots", et non "types". De plus, vous effacerez le chemin par défaut, vous devriez donc utiliser "typeRoots" : ["custom_typings", "node_modules/@types"]
En supposant que vous avez votre paquet js externe installé sous node_modules, je pense qu'il y a deux options :
fournir un texte type dans le paquet et ajoutez-y une référence :
// node_modules/secret-package/index.d.ts
export interface SecretInterface {
// ¯\_(ツ)_/¯
}
Et référencez le fichier typing dans le package.json :
// node_modules/secret-package/package.json
{
...,
"typings": "./index.d.ts",
...,
}
augmenter le module dans un fichier de déclaration de votre projet
// index.d.ts
declare module 'secret-package' {
interface SecretInterface {
// ¯\_(ツ)_/¯
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Voulez-vous dire l'augmentation des modules (c'est-à-dire l'extension des modules) ?
0 votes
Juste une chose simple, j'ai besoin de fournir des déclarations pour le code JS externe qui n'est pas couvert par le système "@type" (il n'y a aucun moyen pour moi de publier ces types via npm, le code et les interfaces sont privés).