[英]Typescript generics unlimited nested object
Trying to define a type/interface for a structure of unlimited nested objects but its value must be number|number[].尝试为无限嵌套对象的结构定义类型/接口,但其值必须是 number|number[]。
type TValue = number | number[];
type TDataLevel1 = {
[key: string]: TValue;
};
type TDataLevel2 = {
[key: string]: TValue | TDataLevel1;
};
type TData = {
[key: string]: TValue | TDataLevel2;
};
This works up to 3 levels of nested objects.这最多适用于 3 级嵌套对象。 However, the JSON path.key2.key2.key2.key1 has error since it is the 4th level.但是,JSON path.key2.key2.key2.key1 有错误,因为它是第 4 级。
let data: TData = {
key1: 1234,
key2: {
key1: [2, 4],
key2: {
key1: [6, 8],
key2: { key1: [10, 12, 14] }, // error here
},
},
};
This can be resolved by adding more boilerplate TDataLevel3,4..,N to support N levels.这可以通过添加更多样板 TDataLevel3,4..,N 来支持 N 个级别来解决。 Is there any better way to define such kind of data?有没有更好的方法来定义这种数据?
We can simply reference the type recursively:我们可以简单地递归引用类型:
type TDataB = {
[key: string]: TValue | TDataB;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.