gpt4 book ai didi

typescript - 是否可以在 typescript 中没有明确定义的情况下创建嵌套泛型

转载 作者:行者123 更新时间:2023-12-05 04:36:13 26 4
gpt4 key购买 nike

<分区>

我在编写将一种类型应用于另一种类型的所有底层 Prop 的类型时遇到问题。

这样做的目的是使用创建一个类型,它可以将所有底层 Prop 转换为 Vue 3 的 Ref

// Start with some type T
type T = ...

// And a 'function' to apply, U
type U<T> = ...

// This needs to apply U to all bottom level properties of T
// ('bottom level' are all props who's type does not extend object)
type DeepApply<T,U> = ???

例子:

{
a: string,
b: number,
c: {
c1: number,
c2: string
}
}

会变成

{
a: Ref<string>,
b: Ref<number>,
c: {
c1: Ref<number>,
c2: Ref<string>
}
}

这是我最好的镜头,但 TS 在尝试为泛型提供它自己的泛型参数 (U ) 时以及在尝试将具有泛型的类型作为泛型传递而不显式定义其泛型时抛出错误 ( DeepApply ).

type DeepApply<T, U> = {
[P in keyof T]: T[P] extends object ? DeepUnion<T[P], U> : U<T[P]>;
};

type MyRefType = DeepApply<MyType, Ref>

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com