"Use Strict", необхідний у файлі TypeScript?


126

Я бачив публікації про те, куди слід розмістити рядок "використовувати строгий" у файлі коду TypeScript. Моє запитання: навіщо це взагалі?

Оскільки TypeScript вже є сильно набраною мовою, що додає "строгий"?



12
Надане вами посилання визначає, для чого "утримувати суворий режим" у файлі JavaScript. Моє запитання полягає в тому, чи все-таки корисний він / потрібен у файлі TypeScript, де редактори з підтримкою TypeScript і Typescript підхоплюють більшість / усіх (?) Проблем, які будуть застосовані "строго".
DeborahK

Вам також знадобиться, якщо ви будуєте його на ES6, а потім використовуєте щось на зразок Babel, для цього потрібно створити створений сценарій"use strict";
BrunoLM

Не вкладайте його в файл TS, додайте прапор в tsconfig.json --alwaysStrict: Розбирайте в суворому режимі і випромінюйте "використовувати строгий" для кожного вихідного файлу
Дрена

Відповіді:


107

Оновлення

  • TypeScript 1.8+: "use strict";випускається в модулях ( Детальніше ).
  • TypeScript 2.1+: --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включу варіант компілятора, оскільки це додає незначної додаткової суворості без будь-якого накладного обслуговування коду.


Класно, що тести блоку TypeScript покривають це. Я перевірю це. Дякую за приклади. І я погоджуюсь більше не включати його в наші "стандарти кодування" для TypeScript.
ДебораК

Зауважте, що якщо ви використовуєте зовнішні модулі, то будь-який use strictрядок, оголошений у верхній частині файлу TS, може з’являтись замість функції модуля, а не у верхній частині файлу, тим самим трохи змінюючи семантику.
billc.cn

на моїй машині TypeScript 1.4 не дозволяє додати восьмеричні літери під час націлення на ECMAScript 5 або новіших версій, навіть коли не використовується"use strict;"
Джеремі

18

За мої гроші так , "use strict";слід включити до файлів TypeScript.

Не зважаючи на ефекти компіляції часу"use strict"; на Typescript, ймовірно, час виконання коли виконується створений JavaScript:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.