在Typescript中传递类方法作为参数 [英] Passing class method as parameter in Typescript
本文介绍了在Typescript中传递类方法作为参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在寻找将类方法传递给一个函数的可能性,然后该函数可以在该类的一个实例上执行该函数。
类似于伪代码:(注意这是一个抽象的例子)
I'm searching for a possibility to pass a class-method to a function which then can execute that function on an instance of that class. Something like that pseudocode: (note that this is an abstract example)
class Foo {
public somefunc() {
// do some
}
public anyfunc() {
// do any
}
}
function bar(obj: Foo ,func: "Foo.method") { // "that's what im looking for"
obj.func();
}
bar(new Foo(), Foo.somefunc); // do some
bar(new Foo(), Foo.anyfunc); // do any
有没有可能做到这一点?
Is there a possiblity to do this?
我知道我可以这样做:
class Foo {
static somefunc(fooObj: Foo) {
// do some
}
static anyfunc(fooObj: Foo) {
// do any
}
}
interface func {
(fooObj: Foo);
}
function bar(obj: Foo, fn: func) {
fn(obj);
}
bar(new Foo(), Foo.somefunc); // do some
bar(new Foo(), Foo.anyfunc); // do any
但涉及我不想要的静态函数。
but that involves static functions which I don't want.
推荐答案
这不会编译时检查函数是否来自 Foo
,但其余的:
This doesn't compile-time check that the function came from a Foo
, but does the rest:
class Foo {
public somefunc() {
// do some
}
public anyfunc() {
// do any
}
}
function bar(obj: Foo ,func: () => void) {
func.call(obj);
}
bar(new Foo(), Foo.prototype.somefunc); // do some
bar(new Foo(), Foo.prototype.anyfunc); // do any
这篇关于在Typescript中传递类方法作为参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文