"Использовать Strict" необходимо в файле TypeScript?

Я видел сообщения о том, где положить строку "use strict" в файл кода TypeScript. Мой вопрос: зачем вообще это делать?

Поскольку TypeScript уже является строго типизированным языком, что означает "use strict" add?

Ответ 1

Обновление

  • 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, потому что он добавляет небольшую дополнительную строгость без каких-либо издержек на обслуживание кода.

Ответ 2

За свои деньги да, "use strict"; должен быть включен в TypeScript файлы.

Без учета эффектов времени компиляции "use strict"; на Typescript, вероятно, будет эффект выполнения во время сгенерированного javascript: