Javascript Typescript相同键但不同类型嵌套(keyof但嵌套)

Javascript Typescript相同键但不同类型嵌套(keyof但嵌套),javascript,typescript,Javascript,Typescript,我正在尝试创建一个自定义类型,它将泛型参数T的所有类型替换为string[],但将所有属性名称保持嵌套状态 预期行为:无错误 interface Bar { lat: string, lng: string } interface Foo { id: string, bar: Bar } export type PartialDeepKeyOf<T> = { [id in keyof T]: string[] } const baz: Partial

我正在尝试创建一个自定义类型,它将泛型参数T的所有类型替换为
string[]
,但将所有属性名称保持嵌套状态

预期行为:无错误

interface Bar {
    lat: string,
    lng: string
}
interface Foo {
    id: string,
    bar: Bar
}
export type PartialDeepKeyOf<T> = { [id in keyof T]: string[] }

const baz: PartialDeepKeyOf<Foo> = {
    id: ['a','b'],
    bar: {
        lat: ['a','b'],
        lng: ['a','b'],
    }
}
接口栏{
拉特:弦,
液化天然气:管柱
}
接口Foo{
id:string,
酒吧:酒吧
}
导出类型PartialDeepKeyOf={[keyof T中的id]:字符串[]}
const baz:PartialDeepKeyOf={
id:['a','b'],
酒吧:{
纬度:['a','b'],
液化天然气:['a','b'],
}
}
实际行为:

类型“{lat:string[];lng:string[];}”不可分配给类型 '字符串[]'


您需要递归类型遍历

type PartialDeepKeyOf<T> = {
    [P in keyof T]: T[P] extends string
    ? string[]
    : PartialDeepKeyOf<T[P]>
};
type PartialDeepKeyOf={
[P in keyof T]:T[P]扩展字符串
?字符串[]
:PartialDeepKeyOf
};

是,但“我正在尝试创建一个自定义类型,该类型将泛型参数T的所有类型替换为字符串[],但将所有属性名保持嵌套状态。”