在TypeScript中声明一个数组


102

我在Typescript中声明或使用布尔数组时遇到麻烦,不确定哪是错误的。我得到一个undefined错误。我应该使用JavaScript语法还是声明一个新的Array对象?

以下哪一项是创建数组的正确方法?

private columns = boolean[];
private columns = [];
private columns = new Array<boolean>();

如何将所有值初始化为false?

我将如何访问这些值,是否可以像columns[i] = true;.. 那样访问它们?


1
正确的语法是let array:boolean []; 是的,您可以按使用方式访问它
Girdhari Agrawal

Answers:


232

以下是在打字稿中创建布尔数组的不同方法:

let arr1: boolean[] = [];
let arr2: boolean[] = new Array();
let arr3: boolean[] = Array();

let arr4: Array<boolean> = [];
let arr5: Array<boolean> = new Array();
let arr6: Array<boolean> = Array();

let arr7 = [] as boolean[];
let arr8 = new Array() as Array<boolean>;
let arr9 = Array() as boolean[];

let arr10 = <boolean[]> [];
let arr11 = <Array<boolean>> new Array();
let arr12 = <boolean[]> Array();

let arr13 = new Array<boolean>();
let arr14 = Array<boolean>();

您可以使用索引访问它们:

console.log(arr[5]);

然后使用push添加元素:

arr.push(true);

创建数组时,您可以提供初始值:

let arr1: boolean[] = [true, false];
let arr2: boolean[] = new Array(true, false);

1
有这么多不同的方法来声明数组有充分的理由吗?arr5和arr6对我来说似乎特别刺耳。
拉斐尔·戈麦斯

2
@RaphaëlGomès这就是javascript的方式。退房有关arr5和arr6这个问题:stackoverflow.com/questions/8205691/...
Nitzan托默

@juanjinario不是真的。它有两个问题。首先是您没有为变量分配实际值,因此array.push(...)最终会导致运行时错误。同样,您还没有为数组得到任何类型的数组never[]
Nitzan Tomer

9

这是在TS中创建布尔数组并使用false初始化数组的方法:

var array: boolean[] = [false, false, false]

或另一种方法可以是:

var array2: Array<boolean> =[false, false, false] 

您可以在冒号后面指定类型,在这种情况下为布尔数组


5

打字稿中数组的特定类型

export class RegisterFormComponent 
{
     genders = new Array<GenderType>();   // Use any array supports different kind objects

     loadGenders()
     {
        this.genders.push({name: "Male",isoCode: 1});
        this.genders.push({name: "FeMale",isoCode: 2});
     }
}

type GenderType = { name: string, isoCode: number };    // Specified format

1

声明类型化数组的一种方法TypeScript

const booleans = new Array<Boolean>();

// or, if you have values to initialize 
const booleans: Array<Boolean> = [true, false, true];
const valFalse = booleans[1];

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.