TypeScript Generatore di dichiarazioni — Numio
Emette un file di dichiarazione .d.ts dall'origine TypeScript, come fa tsc --declaration --emitDeclarationOnly. I corpi delle funzioni e gli inizializzatori vengono rimossi e i membri della classe privata mantengono solo il proprio nome.
Si desidera visualizzare in anteprima l'area di tipo pubblico che un file di libreria pubblicherà prima di compilare il pacchetto.
TypeScript
TypeScript
Quando usarlo
- Si desidera visualizzare in anteprima l'area di tipo pubblico che un file di libreria pubblicherà prima di compilare il pacchetto.
- È necessario un file .d.ts gestito manualmente per un singolo modulo o un input di sola dichiarazione per lo strumento TypeScript to Flow.
Come si usa
- Incolla un modulo TypeScript nel pannello TypeScript.
- Il compilatore TypeScript in un Web Worker locale genera le dichiarazioni con isTS e declarationOnly attivi.
- Copia le dichiarazioni in un file .d.ts. La pagina li formatta con Prettier, quindi utilizzano il rientro a due spazi e nessun punto e virgola.
TypeScript
export interface CartItem { sku: string; price: number; qty: number }
export const TAX_RATE = 0.08;
export function subtotal(items: CartItem[]) {
return items.reduce((sum, i) => sum + i.price * i.qty, 0);
}
export class Cart {
private items: CartItem[] = [];
constructor(public readonly currency = "USD") {}
add(item: CartItem) {
this.items.push(item);
return this;
}
}Dichiarazioni TypeScript (.d.ts)
export interface CartItem {
sku: string
price: number
qty: number
}
export declare const TAX_RATE = 0.08
export declare function subtotal(items: CartItem[]): number
export declare class Cart {
readonly currency: string
private items
constructor(currency?: string)
add(item: CartItem): this
}Dettagli e limiti
La conversione avviene localmente in un Web Worker del browser; l’input non viene caricato su un server. Al primo utilizzo il browser scarica il modulo di conversione necessario.
Il compilatore carica i file di libreria ES2020 e DOM di TypeScript, quindi i tipi Promise, Date, Map e restituiti dedotti dai metodi integrati (numero per il totale parziale nell'esempio) vengono scritti correttamente.
Gli errori di sintassi interrompono la conversione e viene mostrato il messaggio del compilatore, ad esempio TS1134 "Variable declaration expected", al posto dell’output.
Ogni input viene compilato come un file; le importazioni da altri moduli non vengono risolte.
FAQ
Sono supportate le funzioni asincrone?
Sì. Il tipo restituito dedotto è racchiuso in Promise, quindi una funzione asincrona che restituisce Todo[] viene dichiarata come funzione di dichiarazione di esportazione loadTodos(url: stringa): Promise<Todo[]>.
Cosa succede ai membri privati?
Vengono mantenuti solo per nome, ad esempio "private items;", così la struttura della classe resta coerente senza esporre il tipo.
I valori dei parametri predefiniti vengono mantenuti?
No. Un parametro con un valore predefinito diventa facoltativo: constructor(public readonly currency = "USD") diventa constructor(currency?: string).