TL;DR个
Question:个 如何创建类型转换器,以获取使用具有索引签名的类型类型化的对象的已定义键?
我想在TypeScrip中创建一个类型"Converter",它获取一个类型A并返回一个新类型B,该类型将键作为A中定义的所有键,并且只接受字符串作为值,如下例所示:
type AToB<
T,
K extends keyof T = keyof T
> = { [id in K]: string };
const a = {
x : {}
}
const b : AToB<typeof a> = {
x : "here it works"
}
但是,当我在已经定义了索引签名的类型的对象中使用它时,key of没有获得定义的键,例如:
type AWithSig = {
[id : string]: {};
}
const aSig : AWithSig = {
y: {},
z: {}
}
const bSig : AToB<typeof aSig> = {
y : "here the keys",
z : "are not shown :("
}
我在TSPlayGround(link here)中try 了一下,但它不能识别ASIG中定义的键.