【发布时间】:2018-12-26 11:38:56
【问题描述】:
我正在尝试创建一个方法,该方法接收给定类的某些方法名称(作为字符串)作为参数。
例如,如果我有这个代码:
class A {
private member1: string;
public member2: number;
method1() {
//something
}
method2() {
//something
}
propMethod = () => {
//prop method something
}
}
type OnlyClassMethods<T> = T; // need the correct type here
const a = new A();
function callMethod(methodName: OnlyClassMethods<A>) {
// methodName is of type "method1" | "method2"
a[methodName](); // to call this
}
那么methodName将被正确解析并且智能感知会知道这确实是A的方法。 实际上,我将使用方法名称进行模拟,所以我并没有真正调用它(所以无论参数传递或返回值如何,这都应该捕获任何方法)但我仍然想确保它只是存在于班级。
编辑:我设法用类方法和属性方法解决了我的具体问题,但我会把这个问题留给其他人。有关也可以区分这两种类型的解决方案,请参阅下面的Karol Majewski's 解决方案
【问题讨论】:
标签: typescript