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;
}
如何告诉TypeScriptFoo
的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;
}