Есть this
в области значений в списке параметров метода в TypeScript?Может ли `this` использоваться при указании значения по умолчанию в машинописном тексте?
Рассмотрим following code:
class Foo {
constructor(public name) {}
bar(str: string = this.name) { console.log(str); }
}
let f = new Foo("Yo");
f.bar();
Значение по умолчанию str
задается с помощью this
, даже если мы не в теле метода экземпляра.
В настоящее время (в машинописи 1.8) это работает, так как он transpiled к:
Foo.prototype.bar = function (str) {
if (str === void 0) { str = this.name; }
console.log(str);
};
Так this
используется внутри метод, но это указанный быть законным?
Я не мог найти ответ на этот вопрос с беглым взглядом на specification.
Примечание: Это не является законным в C++, что делает меня вопрос, является ли это намеренная функцией или просто артефакт процесса transpilation.
Знаете ли вы, где находится спецификация es6? – Alex
[Здесь] (http://www.ecma-international.org/ecma-262/6.0/#sec-function-definitions) в спецификациях. Кроме того, дается хороший обзор [https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Functions/Default_parameters), указывая, что аргументы по умолчанию оцениваются во время разговора. –