从数组中提取嵌套属性

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];

【讨论】:

不错!这样可行。谢谢。不知道您可以将类型放在 [ ] 操作中,但这很有意义。

以上是关于从数组中提取嵌套属性的主要内容,如果未能解决你的问题,请参考以下文章

使用 LINQ 从具有嵌套数组的类中获取子属性值和父属性值

从 UDF 内的 Spark SQL 行中提取嵌套数组

如何从 React 中的嵌套对象数组中提取数据?

从 Google Ads BigQuery 数据传输中提取/取消嵌套数组

SQL(雅典娜)中的取消嵌套:如何将结构数组转换为从结构中提取的值数组?

使用 Python 从 JSON 嵌套列表和字符串数组中提取值