typescript - 我可以声明一个对象属性必须包含 a 或 b 吗?
问题描述
当我这样声明一个对象时:
interface obj {
a?:string,
b?string
}
但我希望属性 a 不存在,属性 b 必须存在。
let obj:obj={}
它是允许的,我想要它是不允许的,
let obj:obj={a:'a'}
或者let obj:obj={b:'b'}
如果我想要它是允许的。我应该怎么办?
解决方案
|
声明类型时可以使用“或”运算符
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 }
推荐阅读
- android - 观察者 onChanged 只调用了一次 - LiveData + Flowable (LiveDataStreams)
- flutter - StackOverflowError 是由我的自定义底页小部件引发的
- python - 下拉 Ipywidget 不更新
- python-3.x - 使用 .sh 文件在 Raspbian 中自动激活 python 虚拟环境
- html - 如何从 div 显示整个背景图像?(引导程序/css)
- reactjs - 可以使用 styled-components 设置自定义组件的样式吗
- android - 初始加载包括 Room DB 中的所有现有数据
- html - 如何使搜索栏扩展到右侧而不是左侧?
- apache-spark - RDD 在 pyskark 流应用程序中无限增长(同时链接 updateStateByKey 函数)
- swift - 如何在 SwiftUI 中使用 @FetchRequest 和新的可搜索修饰符?