是否可以使用TypeScript覆盖本机类的方法定义?

时间:2018-02-07 16:27:03

标签: typescript web-audio-api

我正在尝试使用TypeScript中的Web Audio Api并遇到一个小问题。我想为AudioParam的原型添加一些方便的方法,以便能够在任何参数上使用它们,但是编译器在类型'AudioParam'上没有说“Property'set'不存在”。

const ctx = new AudioContext()

AudioParam.prototype.set = function (value: number, at?: number, type?: number) {/*impl*/} // Here I'm getting an error on `set`

有没有办法做到这一点?

感谢。

1 个答案:

答案 0 :(得分:0)

我发现TypeScript的做法分为两部分:

  1. 首先你需要做JS部分(这就是你上面的内容)
  2. 您需要告诉TypeScript编译器有关新方法的信息,以便语法检查下游
  3. 我建议:

    AudioParam.prototype.set = function (value: number, at?: number, type?: number) {
    /*impl*/
    }
    export interface AudioParam {
        set(value: number, at?: number, type?: number);
    }
    

    现在应该进行以下操作和语法检查:

    const myAudioParam = new AudioParam();
    myAudioParam.set(1, 2, 3);