TypeScript中字符串字面量类型如何去重?
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
}
回复
1个回答

test
2024-07-12
因为 C
的两个属性都没有使用 ?
来声明属性,所以这两个属性是一定存在的,这就造成了 obj1 声明的时候出现的那个问题,因为你要用 ...obj1
来覆盖属性,那前面的 a
和 b
根本就不需要手工填写。
假如这样写就不会有问题
const objx = {
a: 'a',
b: 'b'
}
const obj1: D = {
c: "", // 没得 c 也会报错
...objx,
...obj
}
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容