【发布时间】:2020-03-11 22:34:47
【问题描述】:
我有以下代码:
interface IFoo {
foo: string;
}
interface IFooBar extends IFoo {
bar: string;
}
const myFun = (fooOrFooBar: IFoo) => {
console.log(fooOrFooBar.foo);
console.log(fooOrFooBar.bar || "I do not have bar.");
}
const myFoo: IFoo = {
foo: "Hello",
}
const myFooBar: IFooBar = {
foo: "Hello",
bar: "World!",
}
myFun(myFoo);
myFun(myFooBar);
这将允许我将实现IFoo 或IFoo 扩展的对象传递给此函数,并以不同方式处理它们。但是,上面的代码不会编译为Property 'bar' does not exist on type 'IFoo'。有没有办法定义函数,使其接受实现IFoo 或扩展IFoo 的任何接口的参数?
【问题讨论】:
-
如果你知道你要预先访问这个道具并且它们可以成为参数的一部分,为什么不相应地输入参数呢?例如
const myFun = (fooOrFooBar: IFoo & Partial<IFooBar>) ...
标签: typescript interface