Я видел сообщения о том, где положить строку "use strict" в файл кода TypeScript. Мой вопрос: зачем вообще это делать?
Поскольку TypeScript уже является строго типизированным языком, что означает "use strict" add?
Я видел сообщения о том, где положить строку "use strict" в файл кода TypeScript. Мой вопрос: зачем вообще это делать?
Поскольку TypeScript уже является строго типизированным языком, что означает "use strict" add?
Обновление
"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";
должен быть включен в TypeScript файлы.
Без учета эффектов времени компиляции "use strict";
на Typescript, вероятно, будет эффект выполнения во время сгенерированного javascript:
MDN определяет улучшения производительности во избежание бокса this
в вызовах функций и удаление function.caller
и function.arguments
.
Джефф Уолден из Mozilla также намекнул на возможности повышения производительности в этом ответе.