как и ожидалось
Не совсем. Типовая аннотация this
обеспечивает структуру из this
. Не то, чтобы это не могло быть отделено (о чем вы можете думать).
class A {
m (this: this) { console.log(this.f()) }
f () { return 'a' }
}
const sockF = {f(){return 'another'}, m(){}, onerror(){}}
sockF.onerror = new A().m // no error!
Есть ли параметр, чтобы TypeScript проверял тип "this" по умолчанию?
Нет.
Почему TypeScript автоматически не проверяет безопасность типов переменной this?
Просто потому, что TypeScript происходит из естественного и возрастающего мира, если заставить ваш JavaScript просто работать с TypeScript. Это, к сожалению, накладывает некоторую (все еще намного меньше, чем на JS) нагрузку на разработчиков.
Кто-то может захотеть компилировать этот код JavaScript:
class A {
m () { console.log(this.f()) }
f () { return 'a' }
}
const x = new A().m;
x();
Вещи разрешены просто потому, что они явно не запрещены . По моему мнению, приветствуется запрос об отказе в этом деле 10