"declaration"
Generuje pliki .d.ts z typami obok skompilowanego JavaScriptu.
Przykład
#{
"compilerOptions": {
"declaration": true,
"outDir": "./dist"
},
"include": ["src"]
}Definicja i zastosowanie
#Przy declaration: true kompilator obok każdego pliku .js zapisuje plik .d.ts. Zawiera on same typy: sygnatury funkcji, interfejsy, typy klas i stałych, bez żadnej implementacji.
To niezbędne przy publikowaniu biblioteki w npm. Użytkownik dostaje działający JavaScript i typy, dzięki którym edytor podpowiada i sprawdza wywołania. Ścieżkę do deklaracji wskazuje się w package.json polem types albo warunkiem types w polu exports.
Opcje pokrewne: declarationDir zapisuje deklaracje w osobnym folderze, emitDeclarationOnly generuje wyłącznie pliki .d.ts (gdy JavaScript buduje inne narzędzie), a declarationMap pozwala w edytorze przejść z typu prosto do pliku źródłowego .ts.
Składnia
#"declaration": trueWięcej przykładów
#// src/progress.ts
export interface Progress {
done: number
total: number
}
export function percent(progress: Progress): number {
return Math.round((progress.done / progress.total) * 100)
}
// dist/progress.d.ts (wygenerowany):
// export interface Progress {
// done: number;
// total: number;
// }
// export declare function percent(progress: Progress): number;{
"name": "@codeworlds/progress",
"type": "module",
"exports": {
".": {
"types": "./dist/progress.d.ts",
"default": "./dist/progress.js"
}
}
}Dobre praktyki
#- Aplikacje, np. na Next.js czy Vite, nie potrzebują deklaracji. Włączaj
declarationw bibliotekach i pakietach współdzielonych w monorepo. - Zapisuj jawnie typy zwracane przez eksportowane funkcje. Deklaracje są wtedy czytelniejsze, a opcja
isolatedDeclarations(TypeScript 5.5) wręcz tego wymaga, żeby inne narzędzia mogły generować.d.tsbez pełnego sprawdzania typów.
Powiązane hasła
#- declare i pliki .d.tsOpisywanie typów czegoś, co istnieje poza twoim kodem TypeScript: zmiennych globalnych, bibliotek JavaScript i modułów.
- "outDir" i "rootDir"Folder, do którego trafia skompilowany kod, i folder źródeł.
- "sourceMap"Generuje mapy źródeł .js.map, dzięki którym debuger pokazuje kod TypeScript zamiast wygenerowanego JavaScriptu.
- "skipLibCheck"Pomija sprawdzanie błędów w plikach deklaracji .d.ts, co przyspiesza kompilację.
Widzisz błąd albo brakuje przykładu? Napisz do nas.