假设我们有以下 Typescript 接口(interface)
:
interface Sample {
key1: boolean;
key2?: string;
key3?: number;
};
在这种情况下,key1
始终是必需的,key2
始终是可选的,而如果 key1
为 true<,则 key3 应该存在
,如果 key1
为 false
,则不应存在。换句话说,一个键的出现取决于另一个键的值。我们如何在 Typescript 中实现这一点?
最佳答案
最直接的表示方式是使用 type alias而不是界面:
type Sample = {
key1: true,
key2?: string,
key3: number
} | {
key1: false,
key2?: string,
key3?: never
}
在这种情况下,类型别名是 union你描述的两种类型。所以 Sample
应该是第一个成分(其中 key1
为真且 key3
是必需的)或第二个成分(其中 key1
为假且 key3
不存在)。
类型别名类似于接口(interface),但它们不能完全互换。如果使用类型别名导致某种错误,请在问题中添加有关您的用例的更多详细信息。
希望对您有所帮助。祝你好运!
关于javascript - Typescript 接口(interface)可选属性取决于其他属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51412872/