在 JS 构造函数中使用时,打字稿检查未正确完成
Typescript check not done correctly when used in JS constructor
我正在使用 TypeScript 来检测普通 JavaScript 中的输入问题。这可以通过一组有限的 JSDoc tags.
但是,它有一个奇怪的问题。在构造函数中创建成员时,未设置其类型。
在下面的屏幕截图中,VS Code 正确地抱怨将数字分配给 update
方法内的字符串,并直接在实例上。但是它没有注意到构造函数中的错误赋值。
这似乎只发生在构造函数中,因为在 update
方法中创建成员确实标记了键入问题。
有没有办法在构造函数中强制进行这些类型检查?
代码:
// @ts-check
function MyClass() {
/** @type {string} */
this.str = 0;
};
MyClass.prototype.update = function() {
this.str = 0
/** @type {number} */
this.num = ""
}
let inst = new MyClass()
inst.str = 0
inst.num = ""
在 function MyClass
上面添加 /** @constructor */
以将其作为构造函数进行检查。参见 the documentation。
我正在使用 TypeScript 来检测普通 JavaScript 中的输入问题。这可以通过一组有限的 JSDoc tags.
但是,它有一个奇怪的问题。在构造函数中创建成员时,未设置其类型。
在下面的屏幕截图中,VS Code 正确地抱怨将数字分配给 update
方法内的字符串,并直接在实例上。但是它没有注意到构造函数中的错误赋值。
这似乎只发生在构造函数中,因为在 update
方法中创建成员确实标记了键入问题。
有没有办法在构造函数中强制进行这些类型检查?
代码:
// @ts-check
function MyClass() {
/** @type {string} */
this.str = 0;
};
MyClass.prototype.update = function() {
this.str = 0
/** @type {number} */
this.num = ""
}
let inst = new MyClass()
inst.str = 0
inst.num = ""
在 function MyClass
上面添加 /** @constructor */
以将其作为构造函数进行检查。参见 the documentation。