【发布时间】:2021-10-23 18:19:34
【问题描述】:
我终于成功地创建了一个泛型类型,它为我提供了所有可能的 json 键列表/值组合。我什至准备了一种限制递归的方法。
type EditAction<T,P extends keyof T,Prev extends any[]> = {
data : T[P]
id : [...Prev, P]
prev : Prev
}
type EditActions<T, Depth extends number = 50, Prev extends any[] = []> = {
[P in keyof T] : T[P] extends JsonType
? (Prev["length"] extends Depth
? EditAction<T,P,Prev>
: (EditAction<T,P,Prev> | EditActions<T[P],Depth,[...Prev,P]>))
: EditAction<T,P,Prev>
}[keyof T]
即使有深度限制,如果深度高于 9,打字稿也会给我一个错误,但我不明白为什么?似乎打字稿最大递归限制为 50 所以有理由得到以下错误:
Type instantiation is excessively deep and possibly infinite.ts(2589)
(property) payload: EditActions<T, 50, []>
【问题讨论】:
标签: typescript recursion typescript-typings