Я бачив публікації про те, куди слід розмістити рядок "використовувати строгий" у файлі коду TypeScript. Моє запитання: навіщо це взагалі?
Оскільки TypeScript вже є сильно набраною мовою, що додає "строгий"?
"use strict";
Я бачив публікації про те, куди слід розмістити рядок "використовувати строгий" у файлі коду TypeScript. Моє запитання: навіщо це взагалі?
Оскільки TypeScript вже є сильно набраною мовою, що додає "строгий"?
"use strict";
Відповіді:
Оновлення
"use strict";випускається в модулях ( Детальніше ).--alwaysStrictопція компілятора аналізує всі файли в суворому режимі і висилає "use strict"у верхній частині всіх виведених файлів ( Детальніше ).Ви можете знайти список деяких прикладів, шукаючи тести TypeScript на "в строгому режимі".
Ось кілька прикладів коду, який видасть помилку часу компіляції лише тоді, коли ви "use strict";:
// future reserved keyword not allowed as variable name
var let,
yield,
public,
private,
protected,
static,
implements;
// "delete" cannot be called on an identifier
var a;
delete a;
// octal literals not allowed
03;
Є ще кілька прикладів, коли "use strict";можна видалити помилку лише під час виконання. Наприклад:
"use strict";
delete Object.prototype;
Особисто я не вважаю це все корисним у запобіганні мені помилок у TypeScript, а додатковий шум, який він додає до файлу, не змушує його писати. Це було сказано, починаючи з TS 2.1, я --alwaysStrictвключу варіант компілятора, оскільки це додає незначної додаткової суворості без будь-якого накладного обслуговування коду.
use strictрядок, оголошений у верхній частині файлу TS, може з’являтись замість функції модуля, а не у верхній частині файлу, тим самим трохи змінюючи семантику.
"use strict;"
За мої гроші так , "use strict";слід включити до файлів TypeScript.
Не зважаючи на ефекти компіляції часу"use strict"; на Typescript, ймовірно, час виконання коли виконується створений JavaScript:
MDN ідентифікує поліпшення продуктивності уникнення боксу thisу викликах функцій та видаленні властивостей function.callerта function.arguments.
Джефф Уолден з Mozilla також натякнув на можливості для підвищення продуктивності у цій відповіді .