首页 > 解决方案 > 我可以声明一个对象属性必须包含 a 或 b 吗?

问题描述

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

标签: typescript

解决方案


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

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 }

推荐阅读