使用Typescript键入检查Javascript:子类化会引发错误

时间:2017-05-10 22:05:34

标签: javascript typescript visual-studio-code

version 1.12 Visual Studio Code开始,{。}}。。js文件与.ts文件相同。在大多数情况下,这真的很整洁,但我得到一个我不明白的错误:

class FreezableSet extends Set {
    add (value) {
        if (!Object.isFrozen(this)) super.add(value);
        return this;
    }
    delete (value) {
        if (Object.isFrozen(this)) return false;
        return super.delete(value);
    }
    clear () {
        if (Object.isFrozen(this)) return;
        super.clear();
    }
}

第一行中的Set会被注释,并显示以下错误:

  

基础构造函数必须都具有相同的返回类型。

为了清楚起见,Set是ES6基本集合类型。

使用带有或不带括号的/** @augments {Set<any>} */注释或注释方法,不会改变任何内容。

有谁理解这意味着什么?对于所有列出的方法,我可以看到感染类型与它们的超级签名相同。

  • (method) FreezableSet.add(value: any): this
  • (method) FreezableSet.delete(value: any): boolean
  • (method) FreezableSet.clear(): void

0 个答案:

没有答案