type A = 'a' | 'b'
type B = 'b' | 'c' | A
type C = {
[key in A]: string
}
type D = {
[key in B]: string
}
const obj: C = {
a: 'a',
b: 'b'
}
// 我想这样该怎么做
const obj1: D = {
a: 'a', // 多次指定了 "a",因此将重写此用法。
b: 'b', // 多次指定了 "b",因此将重写此用法。
...obj
}
因为
C
的两个属性都没有使用?
来声明属性,所以这两个属性是一定存在的,这就造成了 obj1 声明的时候出现的那个问题,因为你要用...obj1
来覆盖属性,那前面的a
和b
根本就不需要手工填写。假如这样写就不会有问题
传送门:TypeScript: TS Playground