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