我怎样才能引用泛型类型的子类



我想对所提供对象及其子对象的键进行一个通用类型检查。这个想法是:

type A<T> = {
key: keyof T;
childKey: keyof T[this.key] // i dont know how to make this work
};

如果上述类型有效:

const a = {  child1: { param: 1 }, child2: { param: 1 } };

const myObj: A<typeof a> = {
key: "child3",        // << child3 is not a key of a
childKey: "param"
}
const myObj: A<typeof a> = {
key: "child1",        
childKey: "param2"    // << param2 is not a key of a.child1
}

我试过keyof T[this.key]keyof T["key"]keyof ThisType["key],它们都没有给我正确的行为。有人能给我建议吗?

如果我理解正确,您可能希望创建所有有效的keychildKey组合的并集。这可以通过映射键和嵌套键来实现。

type A<T> = {
[K1 in keyof T]: {
[K2 in keyof T[K1]]: {
key: K1,
childKey: K2
}
}[keyof T[K1]]
}[keyof T]
const myObj: A<typeof a> = {
key: "child3",        // Type '"child3"' is not assignable to type '"child1" | "child2"'
childKey: "param"
}
const myObj2: A<typeof a> = {
key: "child1",        
childKey: "param2"    // Type '"param2"' is not assignable to type '"param"'
}

游乐场

最新更新