成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

TS 5.4:Object.groupBy 和 Map.groupBy 方法添加了類型聲明

開發 前端
本文我將介紹 Object.groupBy 和 Map.groupBy 這兩個方法,需要注意的是,你需要把Tsconfig.json 文件中 Target 屬性配置成 Esnext 才訪問這些方法。

2 月 22 日,TypeScript 團隊發布了 TypeScript 5.4 RC 版本。即將發布的 TypeScript 5.4 為 Object.groupBy 和 Map.groupBy 方法添加了類型聲明。

通過以下命令,你就可以體驗最新的 TypeScript 5.4 RC 版本:

npm install -D typescript@rc

本文我將介紹 Object.groupBy 和 Map.groupBy 這兩個方法,需要注意的是,你需要把 tsconfig.json 文件中 target 屬性配置成 esnext 才訪問這些方法。

{
  "compilerOptions": {
    "target": "esnext", 
  }
}

Object.groupBy()

Object.groupBy() 靜態方法會根據提供的回調函數返回的字符串值對給定可迭代的元素進行分組。該方法的類型定義如下:

// typescript/lib/lib.esnext.object.d.ts
interface ObjectConstructor {
    /**
     * Groups members of an iterable according to the return value of the passed callback.
     * @param items An iterable.
     * @param keySelector A callback which will be invoked for each item in items.
     */
    groupBy<K extends PropertyKey, T>(
        items: Iterable<T>,
        keySelector: (item: T, index: number) => K,
    ): Partial<Record<K, T[]>>;
}

在以上代碼中,K 和 T 是泛型變量,其中 K extends PropertyKey 是泛型約束,PropertyKey 是一個聯合類型:

type PropertyKey = string | number | symbol;

而 Partial 和 Record 是 TypeScript 內置的工具類型。由 groupBy 的類型定義可知,參數 keySelector 是函數類型,包含 item 和 index 兩個參數。

下面,我們將使用 Object.groupBy() 方法,對數組中的對象進行分組:

const inventory = [
  { name: "asparagus", type: "vegetables", quantity: 5 },
  { name: "bananas", type: "fruit", quantity: 0 },
  { name: "goat", type: "meat", quantity: 23 },
  { name: "cherries", type: "fruit", quantity: 5 },
  { name: "fish", type: "meat", quantity: 22 },
];

const groupedByType = Object.groupBy(inventory, ({ type }) => type);

Map.groupBy()

Map.groupBy() 靜態方法使用提供的回調函數返回的值對給定可迭代的元素進行分組。最終返回的 Map 使用測試函數中的唯一值作為鍵,可用于獲取每個組中的元素數組。該方法的類型定義如下:

interface MapConstructor {
    /**
     * Groups members of an iterable according to the return value of the passed callback.
     * @param items An iterable.
     * @param keySelector A callback which will be invoked for each item in items.
     */
    groupBy<K, T>(
        items: Iterable<T>,
        keySelector: (item: T, index: number) => K,
    ): Map<K, T[]>;
}

在以上代碼中,K 和 T 是泛型變量。調用該方法后,會返回 Map 類型的對象。與 Object.groupBy 靜態方法一樣,參數 keySelector 也是函數類型,包含 item 和 index 兩個參數。

下面我們來看一下如何使用 Map.groupBy() 方法對數組中的對象進行分組:

const inventory = [
  { name: 'asparagus', type: 'vegetables', quantity: 6 },
  { name: 'bananas', type: 'fruit', quantity: 16 },
  { name: 'goat', type: 'meat', quantity: 20 },
  { name: 'cherries', type: 'fruit', quantity: 12 },
  { name: 'fish', type: 'meat', quantity: 8 },
];

const result = Map.groupBy(inventory, ({ quantity }) =>
  quantity < 10 ? "restock" : "sufficient",
);

const restock = result.get("restock");
const sufficient = result.get("sufficient");

責任編輯:姜華 來源: 全棧修仙之路
相關推薦

2024-07-24 13:02:31

LodashJS分組

2023-11-23 11:37:13

JavaScript數組

2023-09-21 10:09:10

JavaScript數組分組

2023-11-03 07:21:40

Javascript數組分組

2013-09-13 15:56:11

梭子魚云存儲梭子魚

2009-07-16 13:30:12

resultMapgroupBy屬性

2022-01-11 12:13:33

JavaScript編程語言

2022-10-08 13:29:19

Pandasgroupby

2020-12-09 18:36:28

ObjectArrayJavaSc

2022-08-23 16:07:02

ArkUI鴻蒙

2022-04-17 10:29:10

TSTypeScript對象類型

2021-05-21 14:26:18

ObjectMap前端

2022-01-17 20:59:37

開發group by思路

2022-09-02 15:17:04

ArkUI鴻蒙

2009-09-08 15:56:50

Linq使用Group

2020-11-20 13:00:10

微軟Linux服務器

2023-12-24 10:09:55

Linux新聞

2023-11-04 10:19:56

Skiff Mail快速別名

2022-08-08 19:46:26

ArkUI鴻蒙

2022-01-19 23:41:56

TS索引類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费自拍 | 日本一区二区在线视频 | 国产精品视频一区二区三区 | 久久国| 高清一区二区三区 | 日本一区二区三区四区 | 日韩一区二区福利 | 国产精品久久久久久久久久久久冷 | 日韩免费视频一区二区 | 伊人久久精品一区二区三区 | 国产网站久久 | 在线观看黄视频 | 免费观看黄色片视频 | 精品一二区 | 一区二区三区国产在线观看 | 日韩欧美在线一区 | 亚洲精品久久久久久久不卡四虎 | 香蕉一区| 色播久久久 | 爱爱视频在线观看 | 精品国产一区二区三区四区在线 | 国产精品国产三级国产aⅴ中文 | 天天av网| 成人精品国产一区二区4080 | 91精品国产91久久久久久吃药 | 日韩中文字幕区 | 2019精品手机国产品在线 | 久久精品欧美一区二区三区不卡 | 在线欧美视频 | 国产黄色一级片 | 在线播放国产一区二区三区 | 亚洲综合久久久 | 欧美一级全黄 | 精品国产99 | 欧美日韩电影一区二区 | 亚洲欧美在线观看视频 | 久久国产亚洲精品 | 亚洲综合大片69999 | 国产精品免费一区二区三区四区 | 男女视频在线观看网站 | 成人一区二区三区在线观看 |