Z technicznego punktu widzenia można pobrać wyjście ES6 z tsc
i od razu podłączyć je do kompilatora, ponieważ ten ostatni ma przyjąć JS jako dane wejściowe. Robimy to już w wielu miejscach, np. Skośne aplikacje skompilowane z kompilatorem zamykającym pobierają dystrybucję biblioteki rxjs i dołączają ją do pakietu zamknięcia. Zobacz https://github.com/angular/closure-demo
W praktyce znajdujemy kilka powodów, aby użyć czegoś takiego jak tsickle, aby przekształcić JS, zanim Closure go zobaczy.
- enums emitują nie działa w zamknięcie (lub pakiet IIUC)
- Zamknięcie ma pewne ograniczenia z ES6, na przykład, że obecnie nie obsługuje
export *
- tsickle re-pisze, że do export {each, visible, symbol}
- dodanie Adnotacje JSDoc pomagają w zrozumieniu struktury kodu, co może poprawić optymalizację i zmniejszyć liczbę ostrzeżeń, które drukuje.
Nasz obecny plan polega na rozłożeniu karsi na wiele transformacji emitujących TS 2.3, wtedy możemy być bardziej zrozumiale, które transformacje faktycznie muszą być włączone w kompilatorze.
Dodawanie typów jest opcjonalne. Jeśli wyłączysz tryb wpisywania tekstu, po prostu wydrukujemy {?}
dla typów. Jednakże, jeśli kiedykolwiek będziesz chciał użyć wyjścia TypeScript z kodu JS zamknięcia, będziesz potrzebował sprawdzania typu zamknięcia, aby poznać typy.
Jeśli grasz na nowe narzędzie do budowania, w pewnym momencie zbudujemy karę w łańcuchu narzędziowym firmy Bazel pod numerem https://github.com/bazelbuild/rules_typescript. W międzyczasie możesz złożyć wniosek o funkcję dla głównej bazy Tsickle, aby obsługiwała więcej flag linii poleceń. (Ale myślę, że Lucidchart już trzyma widelec Tsickle'a?)
Tylko Angularne urządzenie rdzenia mogło prawidłowo odpowiedzieć na to pytanie. –
@ChadKillingsworth, ale nie jest to aplikacja Angular. –
Wiem - ale są to jedyni twórcy, o których wiem, że rozumieją ten krajobraz na tym poziomie. Kompilator maszynopisów, tsickle i kompilator zamykania - to dość specyficzny zbiór wiedzy. I to jest bardzo nietrywialne pytanie. –