TypeScript-declaraties genereren — Numio
Zendt een .d.ts-declaratiebestand uit de TypeScript-bron, zoals tsc --declaration --emitDeclarationOnly dat doet. Functie-instanties en initialisatoren worden verwijderd en leden van de privéklasse behouden alleen hun naam.
U wilt een voorbeeld bekijken van het openbare typeoppervlak dat een bibliotheekbestand zal publiceren voordat u het pakket bouwt.
TypeScript
TypeScript
Wanneer gebruik je dit?
- U wilt een voorbeeld bekijken van het openbare typeoppervlak dat een bibliotheekbestand zal publiceren voordat u het pakket bouwt.
- U hebt een met de hand onderhouden .d.ts nodig voor een enkele module, of een alleen-declaratie-invoer voor de TypeScript to Flow-tool.
Hoe werkt het
- Plak een TypeScript-module in het TypeScript-paneel.
- De TypeScript-compiler verwerkt de broncode lokaal in je browser en genereert alleen declaraties.
- Kopieer de aangiften naar een .d.ts-bestand. De pagina formatteert ze met Prettier, dus ze gebruiken inspringing met twee spaties en geen puntkomma's.
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;
}
}TypeScript-aangiften (.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
}Details en beperkingen
De conversie vindt lokaal plaats in een Web Worker in je browser. Je invoer wordt niet naar een conversieserver verstuurd. De benodigde bibliotheken worden in de browser geladen.
De compiler laadt de ES2020- en DOM-bibliotheekbestanden van TypeScript, zodat de typen Promise, Date, Map en return die zijn afgeleid van de ingebouwde methoden (nummer voor subtotaal in het voorbeeld) correct worden geschreven.
Syntaxisfouten stoppen de conversie en het compilerbericht, bijvoorbeeld TS1134 "Variabeldeclaratie verwacht", wordt weergegeven in plaats van de uitvoer.
Elke invoer wordt als één bestand samengesteld; Importeren uit andere modules wordt niet opgelost.
FAQ
Worden asynchrone functies ondersteund?
Ja. Het afgeleide retourneringstype is verpakt in Promise, dus een asynchrone functie die Todo[] retourneert, wordt gedeclareerd als exportdeclaratiefunctie loadTodos(url: string): Promise<Todo[]>.
Wat gebeurt er met particuliere leden?
Ze worden alleen op naam bewaard, bijvoorbeeld 'privéitems;', dus de klassevorm komt nog steeds overeen zonder het type bloot te leggen.
Worden de standaard parameterwaarden behouden?
Nee. Een parameter met een standaardwaarde wordt optioneel, dus constructor(public readonly currency = "USD") wordt constructor(currency?: string).