假设我们有以下Typescript interface
:
interface Sample {
key1: boolean;
key2?: string;
key3?: number;
};
在这种情况下,始终需要key1
,key2
始终是可选的,而如果key1
是true
,则key3应该存在;如果key1
是false
,则key3应该不存在。换句话说,一个键的出现取决于另一个键的值。我们如何在Typescript中实现呢? 最佳答案
最简单的表示方法是type alias而不是接口(interface):
type Sample = {
key1: true,
key2?: string,
key3: number
} | {
key1: false,
key2?: string,
key3?: never
}
在这种情况下,类型别名是您要描述的两种类型的union。因此,
Sample
应该是第一个组成部分(其中key1
为true且需要key3
)或第二个组成部分(其中key1
为false且不存在key3
)。类型别名类似于接口(interface),但它们不能完全互换。如果使用类型别名导致某种错误,请在问题中添加有关您的用例的更多详细信息。
希望能有所帮助。祝你好运!