我有以下课程:
class Foo {
handler (mutations) {
// logic
}
}
handler
方法应该是处理MutationObserver
突变的函数。 MutationObserver
有内置类型,具体是:
interface MutationCallback {
(mutations: MutationRecord[], observer: MutationObserver): void;
}
如何告诉TypeScript handler
中的Foo
应该是MutationCallback
?
class Foo {
handler: MutationCallback = function (mutations) {
// logic
}
}
但是编译后的代码是这样的:
var Foo = /** @class */ (function () {
function Foo() {
this.handler = function (mutations) {
// logic
};
}
return Foo;
}());
handler
被视为实例属性,未在Foo.prototype
上设置,我不希望这样。编译后的代码应如下所示:
var Foo = /** @class */ (function () {
function Foo() {
}
Foo.prototype.handler = function (mutations) {
// logic
};
return Foo;
}());
interface Foo {
handler: MutationCallback
}
class Foo {
handler (mutations) {
// logic
}
}
但是TypeScript给出了错误:
重复的标识符“ handler”。
答案 0 :(得分:0)
您可以为您的Foo
类型创建接口,并定义处理程序应为MutationCallback
类型
interface IFoo {
handler: MutationCallback
}
class Foo implements IFoo {
handler(mutations: MutationRecord[], observer: MutationObserver) {
// logic
}
}
interface MutationCallback {
(mutations: MutationRecord[], observer: MutationObserver): void;
}