热搜:fiddler git ip ios 代理
历史搜索

如何在TypeScript中合并数组?

游客2024-08-25 12:33:01

在 TypeScript 中合并数组

使用展开语法...在 TypeScript 中合并数组。排列语法将把数组的值解压到一个新数组中。

新数组的类型将反映所提供数组中值的类型。

const arr1 = ['mybj', '123'];
const arr2 = ['.', 'com'];

// 👇️ const arr3: string[]
const arr3 = [...arr1, ...arr2];

console.log(arr3); // 👉️ [ 'mybj', '123', '.', 'com' ]

我们使用展开语法()将 2 个数组的元素解构为第三个数组。

最终数组的类型将反映所提供数组的类型。

const arr1 = ['mybj', '123'];
const arr2 = [1, 2];

// 👇️ const arr3: (string | number)[]
const arr3 = [...arr1, ...arr2];

// 👇️ [ 'mybj', '123', 1, 2 ]
console.log(arr3);

我们使用展开语法(…)将字符串和数字数组解构缩为第三个数组。

第三个数组的类型是表示字符串和数字数组的并集。

下面是一个显式键入数组的示例。

const arr1: string[] = ['mybj', '123'];
const arr2: number[] = [1, 2];

// 👇️ const arr3: (string | number)[]
const arr3: (string | number)[] = [...arr1, ...arr2];

// 👇️ [ 'mybj', '123', 1, 2 ]
console.log(arr3);

如果试图将指定类型以外的任何其他类型的值添加到数组中,类型检查器将抛出错误。

语法(string | number)[]称为并集,表示数组可以包含字符串和数字。

请注意,在 TypeScript 中键入数组的语法是type[],而不是[type]

  • [type]语法用于声明包含单个类型元素的元组。
  • type[]语法用于声明一个数组,该数组包含零个或多个类型为的元素。

使用展开语法时,对数组进行解构的顺序很重要。

const arr1 = ['a', 'b'];
const arr2 = ['c', 'd'];

// 👇️ const arr3: string[]
const arr3 = [...arr2, ...arr1];

// 👇️ ['c', 'd', 'a', 'b']
console.log(arr3);

根据需要,可以使用任意多个数组重复此过程。

const arr1 = ['a', 'b'];
const arr2 = ['c', 'd'];
const arr3 = ['e', 'f'];

// 👇️ const arr3: string[]
const arr4 = [...arr1, ...arr2, ...arr3];

// 👇️ ['a', 'b', 'c,' 'd', 'e', 'f']
console.log(arr4);

使用 concat()合并 TypeScript 中的数组

我们还可以在 TypeScript 中看到用于合并数组的Array.concat()方法。

const arr1 = ['a', 'b'];
const arr2 = ['c', 'd'];
const arr3 = ['e', 'f'];

// 👇️ const arr3: string[]
const arr4 = arr1.concat(arr2, arr3);

// 👇️ ['a', 'b', 'c,' 'd', 'e', 'f']
console.log(arr4);

如何在TypeScript中合并数组? 1

concat()方法还可以合并两个或多个数组。该方法将一个或多个数组作为参数,并将它们合并到调用该方法的数组中。

但是,我个人推荐还是使用展开语法(),因为 TypeScript 中concat()方法的显得不那么直观。

const arr1 = ['a', 'b'];
const arr2 = [1, 2];

// ⛔️  Type 'number[]' is not assignable to
// type 'ConcatArray'.ts(2769)
const arr3 = arr1.concat(arr2);

上面代码导致类型检查器抛出错误,因为我们对字符串数组调用了concat()方法,并向其传递了一个数字数组。

代码中希望只将与参数类型相同的数组传递给 concat()方法。

当我们使用更灵活的展开语法()时,情况并非如此。

标签:concat()