Я пытаюсь комментировать типы в моем старом коде JavaScript.У меня проблемы с this
при использовании prototype
определений классов.
Например, в:
/**
* @constructor
* @param {string} name
* @type {Animal}
*/
function Animal(name){
this.name=name;
}
Animal.prototype.show = function show(){
console.log(this.name);
}
var a = new Animal("bob");
a.show();
Я получаю:
Когда я использую стиль класса, у меня нет никаких проблем:
class AnimalClass{
/**
* @param {string} name
*/
constructor(name){
this.name=name;
}
show(){
console.log(this.name);
}
}
var animal = new AnimalClass("bob");
animal.show();
Мой tsconfig.json:
{
"compilerOptions": {
"lib":["es2017", "es2015", "dom"],
"noImplicitAny": true,
"alwaysStrict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
"noFallthroughCasesInSwitch": true,
"allowJs": true,
"strict": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"checkJs": true,
"noImplicitThis": true
}
}
Мой вопрос заключается в том, как аннотировать тип в старом стиле JavaScript.