erasableSyntaxOnly
Tylko to, co da się wymazać
Zakazuje konstrukcji TypeScriptu emitujących kod wykonawczy — enumów, przestrzeni nazw, właściwości parametrów, pól klasy z `declare`.
- Od
- TypeScript 5.8
- strict
- Poza strict
- W twoim tsconfigu
"erasableSyntaxOnly": true
Ten sam fragment za każdym razem. Zmieniła się tylko opcja.
Z wyłączoną
"erasableSyntaxOnly": falseexport enum Level {
Low,
High,
}Kompiluje się czysto
Z włączoną
"erasableSyntaxOnly": trueexport enum Level {
Low,
High,
}Zgłasza TS1294
Dlaczego kompilator się tym przejmuje
Większość TypeScriptu to adnotacje: usuń je, a zostaje JavaScript. Garść funkcji nią nie jest i to przez nie nie da się po prostu obedrzeć pliku z typów. Node, Deno i przeglądarki uruchamiające TypeScript wprost idą drogą obdzierania — więc ta flaga mówi ci w czasie kompilacji, czy twoje źródło przez nią przejdzie, zamiast dowiadywać się w chwili, gdy ktoś spróbuje.
Wniosek
Unia literałów tekstowych robi to, co robił enum — i znika bez śladu.
Gdzie iść dalej
Opcji: 22

