我可以声明一个对象属性必须包含a或b吗?

时间:2018-09-06 06:40:25

标签: typescript

当我这样声明一个对象时: interface obj { a?:string, b?string } 但我希望属性a不存在,属性b必须存在。 let obj:obj={}允许,我希望不允许 let obj:obj={a:'a'}let obj:obj={b:'b'}(如果需要)是允许的。我该怎么办?

1 个答案:

答案 0 :(得分:0)

声明类型时,可以使用“或”运算符|

type obj = { a: string } | { b: string }

如果要为此类型添加更多属性,则可以使用“联合类型”(&

type extendedObj = obj & { c: string }

此类型将接受两者

{ a: string, c: string }

{ b: string, c: string }

但不是

{ a: string, b: string, c: string }