在 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