在JS构造函数中使用Typescript检查不正确

时间:2018-11-13 14:48:36

标签: javascript typescript jsdoc

我正在使用TypeScript来检测普通JavaScript中的键入问题。这可以通过一组有限的JSDoc tags来实现。

但是,有一个奇怪的问题。在构造函数中创建成员时,不会设置其类型。

在下面的屏幕截图中,VS Code正确地抱怨在update方法内直接在实例上为字符串分配数字。但这并没有注意到构造函数中的错误分配。

这似乎只在构造函数中发生,因为在update方法中创建成员确实标记了键入问题。

是否有一种方法也可以在构造函数中强制执行这些类型检查?

VS Code view with squiggles

代码:

// @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 = ""

1 个答案:

答案 0 :(得分:2)

/** @constructor */上方添加function MyClass,以将其检查为构造函数。参见the documentation