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