Я видел сообщения о том, где поместить строку «использовать строгий» в файл кода 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 также намекнул в этом ответе на возможности повышения производительности .