Generator deklaracji TypeScript — Numio
Emituje plik deklaracji .d.ts ze źródła TypeScript, tak jak robi to tsc --declaration --emitDeclarationOnly. Treści funkcji i inicjatory są usuwane, a członkowie klasy prywatnej zachowują tylko swoje nazwy.
Chcesz wyświetlić podgląd powierzchni typu publicznego, którą plik biblioteki opublikuje przed zbudowaniem pakietu.
TypeScript
TypeScript
Kiedy go używać
- Chcesz wyświetlić podgląd powierzchni typu publicznego, którą plik biblioteki opublikuje przed zbudowaniem pakietu.
- Potrzebujesz ręcznie utrzymywanego pliku .d.ts dla pojedynczego modułu lub danych wejściowych zawierających wyłącznie deklarację dla narzędzia TypeScript do narzędzia Flow.
Jak używać
- Wklej moduł TypeScript do panelu TypeScript.
- Kod trafia do lokalnego konwertera z opcjami isTS i declarationOnly; kompilator TypeScript emituje deklaracje w przeglądarce.
- Skopiuj deklaracje do pliku .d.ts. Strona formatuje je w formacie Prettier, więc używają wcięcia z dwiema spacjami i nie używają średników.
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;
}
}Deklaracje 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
}Szczegóły i ograniczenia
Konwersja odbywa się lokalnie w Web Workerze w przeglądarce. Dane wejściowe nie są wysyłane na serwer konwersji. Wymagane moduły są pobierane przy pierwszym użyciu narzędzia.
Kompilator ładuje biblioteki ES2020 i DOM TypeScript, dzięki czemu Promise, Date, Map i typy zwracane wywnioskowane z metod wbudowanych (number dla subtotal w przykładzie) są zapisywane poprawnie.
Błędy składni zatrzymują konwersję, a zamiast wyniku wyświetlany jest komunikat kompilatora, np. TS1134 "Variable declaration expected".
Każde wejście jest kompilowane jako jeden plik; importy z innych modułów nie są rozwiązywane.
FAQ
Czy obsługiwane są funkcje asynchroniczne?
Tak. Wywnioskowany typ powrotu jest opakowany w Promise, zatem funkcja asynchroniczna zwracająca Todo[] jest deklarowana jako funkcja deklaracji eksportu loadTodos(url: string): Promise<Todo[]>.
Co dzieje się z członkami prywatnymi?
Zachowywane są tylko nazwy, np. "private items;", dzięki czemu struktura klasy nadal się zgadza bez ujawniania typu.
Czy domyślne wartości parametrów są zachowywane?
Nie. Parametr z wartością domyślną staje się opcjonalny, więc constructor(public readonly currency = "USD") staje się constructor(currency?: string).