【发布时间】:2019-02-05 16:30:05
【问题描述】:
假设你有一个类似的界面
interface Foo {
a?: number[];
b?: number[];
c?: number[];
d?: number[];
}
是否可以声明一个类型,它可以接受两个属性的任意组合(例如,a 和 b 或 a 和 c)但会拒绝三个属性(例如,a、@ 987654328@,c)?
I've made a TypeScript Playground 我相信这说明了我的期望。
type Bar =
{ a: number[]; b: number[]; } |
{ a: number[]; c: number[]; } |
{ a: number[]; d: number[]; };
function foo(a: Bar): void {
console.log(a);
}
foo({ a: [1, 2], d: [1, 2] });
foo({ a: [1, 2], b: [1, 2], d: [1, 2] }); // Expected failure
【问题讨论】: