Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在整个接口上未定义typescript_Javascript_Typescript - Fatal编程技术网

Javascript 在整个接口上未定义typescript

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

如何声明整个MyCustomObject接口可以回退到空对象

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 | {}
}

接头类型定义是最正确的答案。