javascript - typescript 在整个界面上未定义

标签 javascript typescript

如何声明整个 MyCustomObject 接口(interface)可以回退到一个空对象?

interface MyCustomObject {
   name: string, 
   age: number
}

下面的情况是安全的,它有名称和年龄的默认属性作为后备,但有时如果 obj 来自其他来源,如 api,它可以是其他类型,如空 {}甚至是一个空的 []

const obj: MyCustomObject = {
    name: "",
    age: 0
}

我试过了

interface MyCustomObject {
   name: string, 
   age: number
} | {}

这样不行。

最佳答案

最正确的方法是建立联合

type IUnionType = MyCustomObject | {};

处理这个问题的其他方法是使每个属性都是可选的

interface MyCustomObject {
   name?: string, 
   age?: number
}

或者创建一个可选的对象属性,其中在原始接口(interface)中定义了联合。

interface MyCustomObject2 {
    obj: MyCustomObject | {}
}

examples

关于javascript - typescript 在整个界面上未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61682749/

相关文章:

javascript - 从对象数组中提取每个对象的属性值并将其放入不同的数组中

javascript - 使用 ng-container 与模板的好处?

javascript - 动态对象数组和多个值

javascript - 将图像加载到 localStorage 并将图像 src 设置到该位置

javascript - 如何将悬停效果更改为仅针对下拉菜单的 onclick

javascript - Responsivevoice.js 可以离线使用吗?

node.js - BigNumber 的 TypeScript 类型定义

javascript - 单击时激活按钮切换类

javascript - TypeScript:VS Code 中的 Array.reduce 函数报告错误

node.js - 带有 Node.js 的 Typescript baseUrl