我有一个带有嵌套对象的接口:
export interface Person {
PersonWrapper: {
name: string;
address: string
email?: string;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试从中创建一个对象,似乎名称不是必需的,但它应该是。它没有在接口中定义为可选属性。我的创建方法如下:
const payload = {
PersonObj: {
address: '123 memory lane'
}
} as Person;
Run Code Online (Sandbox Code Playgroud)
为什么我没有收到编译时错误,指出名称是必需的?如果我忘记将它包装在PersonWrapper中,那么我肯定会收到错误。
由于您没有使用类型注释而是使用类型断言,对于编译器来说,您已经足够接近Person,因此它不会抱怨缺少属性。要修复它,请改用类型注释:
// expected error
const payload: Person = {
PersonWrapper: {
address: "123 memory lane",
},
};
Run Code Online (Sandbox Code Playgroud)
您可以在此处详细了解类型注释和断言之间的区别
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |