Informazioni su “* .d.ts” in TypeScript

Mi sento incuriosito da *.d.ts di un principiante di TypeScript. E qualcuno mi ha detto che questo tipo di file è qualcosa come “head file” in C ++ ma solo per JS. Ma non posso convertire un file JS puro in un file *.d.ts meno che non cambi i *.js con *.ts . Quindi ho tre file: un file JS, un file TS e un file *.d.ts .


  1. Qual è la relazione tra loro?

  2. Come posso usare il file *.d.ts ? Significa che posso cancellare il file *.ts permanente?

  3. In tal caso, in che modo il file *.d.ts può sapere quale file JS sta mappando su se stesso?


Grazie molto! Sarebbe molto bello se qualcuno potesse darmi un esempio.

Il file “d.ts” viene utilizzato per fornire informazioni di tipo typescript su un’API scritta in JavaScript. L’idea è che stai usando qualcosa come jQuery o underscore, una libreria javascript esistente. Vuoi consumare quelli dal tuo codice typescript.

Invece di riscrivere jquery o underscore o qualsiasi altra cosa in typescript, puoi invece scrivere il file d.ts, che contiene solo le annotazioni di tipo. Quindi dal tuo codice typescript ottieni i benefici del typescript del controllo di tipo statico mentre usi ancora una libreria JS pura.

d sta per file di dichiarazione :

Quando uno script TypeScript viene compilato, esiste un’opzione per generare un file di dichiarazione (con estensione .d.ts) che funge da interfaccia per i componenti nel codice JavaScript compilato. Nel processo il compilatore rimuove tutti i corpi di funzioni e metodi e conserva solo le firme dei tipi che vengono esportati. Il file di dichiarazione risultante può quindi essere utilizzato per descrivere i tipi di TypeScript virtuale esportati di una libreria o di un modulo JavaScript quando uno sviluppatore di terze parti lo utilizza da TypeScript.

Il concetto di file di dichiarazione è analogo al concetto di file di intestazione trovato in C / C ++.

 declare module arithmetics { add(left: number, right: number): number; subtract(left: number, right: number): number; multiply(left: number, right: number): number; divide(left: number, right: number): number; } 

I file di dichiarazione dei tipi possono essere scritti manualmente per le librerie JavaScript esistenti, come è stato fatto per jQuery e Node.js.

Le grandi raccolte di file di dichiarazione per le librerie JavaScript più diffuse sono ospitate su GitHub in DefinitelyTyped e nel registro delle registrazioni . Viene fornita un’utilità della riga di comando denominata digitazione per facilitare la ricerca e l’installazione di file di dichiarazione dai repository.

Non ho potuto commentare e quindi aggiungere questa come una risposta. Abbiamo avuto qualche problema nel tentativo di mappare i tipi esistenti in una libreria javascript.

Per mappare un file d.ts sul suo file javascript è necessario dare al file d.ts lo stesso nome del file javascript, tenerli nella stessa cartella e puntare il codice necessario per il file d.ts.

ad esempio: test.js e test.d.ts si trovano nel testdir, quindi lo si importa in questo modo in un componente react:

 import * as Test from "./testdir/test"; 

Il file d.ts è stato esportato come un namespace come questo:

 export as namespace Test; export interface TestInterface1{} export class TestClass1{}