如何实现TypeScript泛型类型以解析嵌套属性的类型?
如何创建能解析嵌套属性类型的泛型类型
假设我有如下配置类型:
type Config = { parent: { child: boolean } }
我希望实现类似如下的效果:
type ChildConfigType = NestedType<Config, 'parent.child'> // boolean type ParentConfigType = NestedType<Config, 'parent'> // {child: boolean}
我已有非嵌套类型的基础实现:
function getProp< Type extends object, Key extends keyof Type >(key: Key): Type[Key] { return {} as Type[Key] } getProp<Config>('parent')
同时我也有可用的非嵌套辅助类型:
type PropsOf< Type extends object > = keyof Type type TypeOfProp< Type extends object, Key extends PropsOf<Type> > = Type[Key] function getPropWithHelpers< Type extends object, Key extends PropsOf<Type> >(key: Key): TypeOfProp<Type, Key> { return {} as TypeOfProp<Type, Key> }
我还实现了NestedPropsOf辅助类型,可解析出扁平化的嵌套属性联合类型:
type NestedPropsOf<Type extends object> = { [key in keyof Type & (string | number)]: Type[key] extends object ? `${key}` | `${key}.${NestedPropsOf<Type[key]>}` : `${key}` }[keyof Type & (string | number)] type NestedConfigProps = NestedPropsOf<Config> // 'parent' | 'parent.child'
我正尝试实现如下签名的函数:
function getNestedProp< Type extends object, Key extends NestedPropsOf<Type> >(key: Key): NestedTypeOfProp<Type, Key> { return {} as NestedTypeOfProp<Type, Key> } getNestedProp<Config>('parent.child')
我开始觉得这可能无法实现,因为类型无法直接操作字符串,无法移除路径的第一个片段。
内容的提问来源于stack exchange,提问作者Flechto
相关产品推荐
相关产品推荐

