在 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
类型。
这意味着我们可以将
any
type 的值添加到数组中,但我们不会从类型检查器那里得到任何帮助。您应该始终显式设置空数组的类型。
索引.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