【发布时间】:2018-07-05 19:20:30
【问题描述】:
我有 2 个类,它们都有一个同名的函数,但它们期望不同的参数对象:
class C1 {
public f: (params: { a: string }) => {
}
}
class C2 {
public f: (params: { b: string }) => {
}
}
然后我有一个获取C1 | C2 的函数,我尝试使用一个配置对象调用该函数,该对象具有两者 C1.f 和C2.f 的所有属性。
但这会报错:
const fx = (c: C1 | C2) => {
const params = { a: "a", b: "b" };
c.f(params);
}
我能想到的最佳解决方案是添加一个instanceof 以将c 隐式转换为C1 和C2 并调用该函数:
if (c instanceof C1) {
c.f(params);
} else {
c.f(params);
}
有没有更简单的方法来调用通用函数而不需要类型转换?
【问题讨论】:
-
如果类 C1 和 C2 是你自己的类,你可以用 f 方法指定一个接口。
标签: typescript