在 TypeScript 中声明一个数字数组

在 TypeScript 中声明一个数字数组

Declare an Array of Numbers in TypeScript

要在 TypeScript 中声明一个数字数组,请将数组的类型设置为
number[],例如const arr: number[] = []如果您尝试向数组添加任何其他类型的值,类型检查器将显示错误。

索引.ts
// ✅ Array of numbers with inline declaration const arr: number[] = [1, 2, 3]; // ✅ Empty array of numbers const arr2: number[] = []; // ✅ Using a type type NumberArray = number[]; const arr3: NumberArray = [1, 2, 3];

第一个示例展示了如何使用内联类型声明一个数字数组。

如果您尝试将任何其他类型的值添加到数组中,则会出现错误。

索引.ts
const arr: number[] = [1, 2, 3]; // ⛔️ Error: Argument of type 'boolean' is not // assignable to parameter of type 'number'.ts(2345) arr.push(true);

当您必须将数组初始化为空时,这种方法非常有用。如果您没有显式键入空数组,TypeScript 会假定其类型为
any[].

索引.ts
// 👇️ const arr: any[] const arr = [];

TypeScript 不知道我们将向数组添加什么类型的值,因此它使用非常广泛的any类型。

这意味着我们可以将anytype 的值添加到数组中,但我们不会从类型检查器那里得到任何帮助。

您应该始终显式设置空数组的类型。

索引.ts
const arr: number[] = []; // ✅ Works arr.push(100); // ⛔️ Error: Argument of type 'boolean' is not // assignable to parameter of type 'number'.ts(2345) arr.push(true);

另一方面,如果你用值初始化数组,你可以让 TypeScript 推断它的类型。

索引.ts
// 👇️ const arr: number[] const arr = [1, 2, 3];

TypeScript 已经知道上面的数组是number[]基于它的值的。

您还可以使用类型来定义数字数组。

索引.ts
type FavNumbers = number[]; const arr: FavNumbers = [1, 2, 3];

如果你有一个对象,其属性是一个数字数组,你也可以使用一个接口。

索引.ts
interface Person { favNumbers: number[]; } const arr: Person = { favNumbers: [1, 2, 3], };

在某些情况下,您可能知道数组将只有 N 个特定类型的元素。您可以在这种情况下使用元组。

索引.ts
const coords: [number, number] = [5, 10];

我们上面声明的coords变量是一个包含2数字的元组。

如果您需要声明一个readonly数字数组,请使用
Readonly
实用程序类型。

索引.ts
const coords: Readonly<number[]> = [5, 10]; // ⛔️ Error: Property 'push' does not exist // on type 'readonly number[]'.ts(2339) coords.push(100);

我们将number[]类型传递给Readonly实用程序类型,因此数组只能读取,不能更改。

还有一种更具体的ReadonlyArray实用程序类型可以实现相同的结果。

索引.ts
const coords: ReadonlyArray<number> = [5, 10]; // ⛔️ Error: Property 'push' does not exist // on type 'readonly number[]'.ts(2339) coords.push(100);

请注意,我们传递了number不是
实用程序类型。
number[]ReadonlyArray