Javascript 在整个接口上未定义typescript
如何声明整个MyCustomObject接口可以回退到空对象Javascript 在整个接口上未定义typescript,javascript,typescript,Javascript,Typescript,如何声明整个MyCustomObject接口可以回退到空对象 interface MyCustomObject { name: string, age: number } 下面的case是安全的,它有默认的name和age属性作为回退,但有时如果obj来自其他源(如api),它可以是其他类型(如空{}或甚至是空[] const obj: MyCustomObject = { name: "", age: 0 } 我试过这个 interface MyCustomO
interface MyCustomObject {
name: string,
age: number
}
下面的case是安全的,它有默认的name和age属性作为回退,但有时如果obj
来自其他源(如api),它可以是其他类型(如空{}或甚至是空[]
const obj: MyCustomObject = {
name: "",
age: 0
}
我试过这个
interface MyCustomObject {
name: string,
age: number
} | {}
这样不行。最正确的方法是创建一个联合体
type IUnionType = MyCustomObject | {};
处理此问题的其他方法是使每个属性都是可选的
interface MyCustomObject {
name?: string,
age?: number
}
或者在原始接口中定义联合的位置创建可选对象属性
interface MyCustomObject2 {
obj: MyCustomObject | {}
}
接头类型定义是最正确的答案。