Widziałem posty dotyczące tego, gdzie umieścić wiersz „użyj ścisłego” w pliku kodu TypeScript. Moje pytanie brzmi: po co to w ogóle mieć?
Skoro TypeScript jest już językiem z silną typizacją, co dodaje „ścisłe”?
javascript
typescript
DeborahK
źródło
źródło
"use strict";
Odpowiedzi:
Aktualizacje
"use strict";
jest emitowany w modułach ( Czytaj więcej ).--alwaysStrict
opcja kompilatora analizuje wszystkie pliki w trybie ścisłym i emituje"use strict"
na górze wszystkich plików wyjściowych ( Czytaj więcej ).Listę przykładów można znaleźć, wyszukując w testach TypeScript słowo „w trybie ścisłym”.
Oto kilka przykładów kodu, który zgłasza błąd czasu kompilacji tylko wtedy, gdy
"use strict";
:Istnieje kilka innych przykładów, w których
"use strict";
wystąpiłby błąd tylko w czasie wykonywania. Na przykład:Osobiście uważam, że nie jest to przydatne w zapobieganiu popełnienia błędów w TypeScript, a dodatkowy szum, który dodaje do pliku, sprawia, że nie zawracam sobie głowy pisaniem go. To powiedziawszy, począwszy od TS 2.1
--alwaysStrict
włączę opcję kompilatora, ponieważ dodaje ona niewielką dodatkową ścisłość bez narzutów związanych z konserwacją kodu.źródło
use strict
ciąg zadeklarowany na początku pliku TS może pojawić się wewnątrz funkcji modułu zamiast na górze pliku, co nieznacznie zmieni semantykę."use strict;"
Za moje pieniądze, tak ,
"use strict";
powinny być zawarte w plikach TypeScript.Pomijając wpływ czasu kompilacji
"use strict";
na Typescript, prawdopodobnie wystąpi wpływ na środowisko wykonawcze, gdy wygenerowany javascript zostanie wykonany:MDN identyfikuje ulepszenia wydajności w unikaniu pudełkowania
this
w wywołaniach funkcji oraz usuwaniu właściwościfunction.caller
ifunction.arguments
.Jeff Walden z Mozilli również zasugerował możliwości poprawy wydajności w tej odpowiedzi .
źródło