我有两种类型,
type Foo = {
[key: string]: {
a: number
}
}
type Bar = {
b: number
}
,我想创建第三个类似的类型:
type FooBar = {
[key: string]: {
a: number,
b: number
}
}
如何使用继承定义FooBar
(以确保Foo
和FooBar
始终具有相同的索引签名/密钥)?
我已经知道我可以做到
type FooBar = {
[key: string]: Foo[string] & bar
}
但是,这需要我分别为key
和Foo
定义FooBar
。
答案 0 :(得分:1)
对于仅带有字符串签名的简单示例,我不会再使事情复杂化。如果Foo
具有离散键,并且您想向每个成员添加Bar
,则可以使用映射类型:
type Foo = {
[key: string]: {
a: number
}
}
type Bar = {
b: number
}
type FooBar = {
[P in keyof Foo]: Foo[P] & Bar
}