现有一个a对象和b对象,a对象为服务器返回的数据,b对象为对a对象加工后的数据。
类型为:
interface C {
a: string
b: string
c: string
}
type A = Omit<C, 'c'>
type B = C
由于A
数据并没有c
字段, 我要加c
字段,但是加c
字段又提示A
没有c
字段,如:
a.c = 'abc' // 报错类型A上不存在属性c
b = a
还是说我直接把类型定义为:
interface C {
a: string
b: string
c?: string
}
type A = C
type B = C
一个方式就是问题中所展示的, 但是不太灵活, 可以使用接口的任意属性:
使用
[propName: string]
定义了任意属性取 string 类型的值。需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集: