Typescript 如何设置类方法的类型?

Typescript 如何设置类方法的类型?,typescript,Typescript,我有以下课程: class Foo { handler (mutations) { // logic } } handler方法应该是处理突变的函数。MutationObserver有内置类型,具体如下: interface MutationCallback { (mutations: MutationRecord[], observer: MutationObserver): void; } 如何告诉TypeScriptFoo的handler应该是MutationC

我有以下课程:

class Foo {
  handler (mutations) {
    // logic
  }
}
handler
方法应该是处理突变的函数。
MutationObserver
有内置类型,具体如下:

interface MutationCallback {
    (mutations: MutationRecord[], observer: MutationObserver): void;
}
如何告诉TypeScript
Foo
handler
应该是
MutationCallback

我试过了 #1 但编译后的代码如下:

var Foo = /** @class */ (function () {
    function Foo() {
        this.handler = function (mutations) {
            // logic
        };
    }
    return Foo;
}());
处理程序
被视为实例属性,没有在
Foo.prototype
上设置,我不希望这样。编译后的代码应如下所示:

var Foo = /** @class */ (function () {
    function Foo() {
    }
    Foo.prototype.handler = function (mutations) {
        // logic
    };
    return Foo;
}());
#2 但是TypeScript给出了错误:

重复标识符“处理程序”


您可以为
Foo
类型创建接口,并定义处理程序的类型应为
MutationCallback

interface IFoo {
    handler: MutationCallback
}


class Foo implements IFoo {
  handler(mutations: MutationRecord[], observer: MutationObserver) {
    // logic
  }
}

interface MutationCallback {
    (mutations: MutationRecord[], observer: MutationObserver): void;
}
interface Foo {
  handler: MutationCallback
}

class Foo {
  handler (mutations) {
    // logic
  }
}
interface IFoo {
    handler: MutationCallback
}


class Foo implements IFoo {
  handler(mutations: MutationRecord[], observer: MutationObserver) {
    // logic
  }
}

interface MutationCallback {
    (mutations: MutationRecord[], observer: MutationObserver): void;
}