从数组中提取嵌套属性
Posted
技术标签:
【中文标题】从数组中提取嵌套属性【英文标题】:Extract nested property from array 【发布时间】:2021-07-17 16:48:24 【问题描述】:给定一个令牌数组:
const myArray = <const>[
tokens: ["one", "two"],
,
tokens: ["three"],
,
tokens: [],
,
somethingElse: ,
,
];
我想为 tokens 属性所具有的所有不同文字获取一个元组。在上面的例子中,结果应该是"one" | "two" | "three"
,但是我所有的尝试都会产生any
,除非我删除第三个数组项。
这是我尝试过的:
type ArrayItem = typeof myArray extends (infer T)[] ? T : never;
type ArrayItemWithTokens = Extract<ArrayItem, tokens: [string] >;
type TokenArrays = ArrayItemWithTokens extends tokens: infer T ? T : never;
type Token = TokenArrays extends (infer T)[] ? T : never;
【问题讨论】:
【参考方案1】:const myArray = [
tokens: ["one", "two"],
,
tokens: ["three"],
,
tokens: [],
,
somethingElse: ,
,
] as const;
type Token = Extract<(typeof myArray)[number], tokens: unknown>['tokens'][number];
【讨论】:
不错!这样可行。谢谢。不知道您可以将类型放在[ ]
操作中,但这很有意义。以上是关于从数组中提取嵌套属性的主要内容,如果未能解决你的问题,请参考以下文章
从 Google Ads BigQuery 数据传输中提取/取消嵌套数组