Przejdź do treści

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ć

  1. Wklej moduł TypeScript do panelu TypeScript.
  2. Kod trafia do lokalnego konwertera z opcjami isTS i declarationOnly; kompilator TypeScript emituje deklaracje w przeglądarce.
  3. 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).

Specyfikacje i referencje