Что означает "использовать строгий" для кода TypeScript?
Этот вопрос является копией "Использовать Strict" , необходимой в файле TypeScript?
Есть несколько ответов, но не ясно, что означает "использовать строгий" оператор в TypeScript, когда tsc обучает мне строгие ошибки режима без этого утверждения.
Но решил спросить, как разделить вопрос, хорошо.
Я использую TypeScript 1.6 и для меня непонятно, что означает "использовать строгий" оператор add в TypeScript?
Использование "use strict"; утверждение выглядит как двойная проверка.
Поскольку tsc показывает строгие ошибки режима без этого утверждения.
Например:
class Foo {
03;
constructor(public name:string) {
}
move(meters:number) {
let o = {p: 1, p: 2};
let a;
delete a;
alert(this.name + " moved " + meters + "m.");
}
sum(a:number, a:number, c:number):number {
var sum = 015 +
197 +
142;
var x = 17;
with (obj)
{
x;
}
[1, 2, 3, 4, 5].map(function (n) {
return !(n > 1) ? 1 : arguments.callee(n - 1) * n;
});
delete sum;
return a + b + c;
}
tsc показывает мне:
- Ошибка: (16, 19) TS2300: Дублировать идентификатор 'a'.
- Ошибка: (24, 9) TS1101: инструкции "с" не допускаются в строгом режиме.
- Ошибка: (8, 18) TS2300: Дублирующий идентификатор 'p'.
- Ошибка: (2, 5) TS1121: Октальные литералы запрещены в строгом режиме.
- Ошибка: (11, 16) TS1102: "delete" не может быть вызван в идентификаторе в строгом режиме.
- Ошибка: (16, 9) TS2300: Дублировать идентификатор 'a'.
- Ошибка: (8, 24) TS1117: Литеральный объект не может иметь несколько свойств с тем же именем в строгом режиме.
- Ошибка: (8, 24) TS2300: Дублирующий идентификатор 'p'.
Ответы
Ответ 1
Я использую TypeScript 1.6 и для меня неясно, что делает "использование строгой" инструкции в TypeScript?
В TypeScript время компиляции он также добавляет проверки имен переменных. Например. следующее в порядке
var implements = 123;
Но следующие ошибки:
"use strict";
var implements = 123; // Error: implements is a reserved keyword in strict mode
Примечание. TypeScript также предотвращает другие ошибки, независимо от строгих деклараций режима, которые происходят в ваших образцах.
Ответ 2
Оператор "use strict"
влияет на время выполнения, поэтому, если что-то недействительное в строгом режиме прошло мимо компилятора TypeScript, оно все равно выведет ошибку во время выполнения.