在 TypeScript 中声明一个布尔值数组
Declare an Array of Booleans in TypeScript
要在 TypeScript 中声明一个布尔数组,请将数组的类型设置为
boolean[]
,例如const arr: boolean[] = []
。如果您尝试向数组添加任何其他类型的值,类型检查器将显示错误。
// ✅ Array of booleans with inline declaration const arr: boolean[] = [true, false, true]; // ✅ Empty array of booleans const arr2: boolean[] = []; // ✅ Using a type type BooleanArray = boolean[]; const arr3: BooleanArray = [true, false, true];
第一个示例展示了如何声明一个具有内联类型的布尔值数组。
如果您尝试将任何其他类型的值添加到数组中,则会出现错误。
const arr: boolean[] = [true, false, true]; // ⛔️ Error: Argument of type 'string' is not // assignable to parameter of type 'boolean'.ts(2345) arr.push('hello');
当您必须将数组初始化为空时,这种方法非常有用。如果您没有显式键入空数组,TypeScript 会假定其类型为
any[]
.
// 👇️ const arr: any[] const arr = [];
TypeScript 不知道我们将向数组添加什么类型的值,因此它使用非常广泛的any
类型。
any
type 的值添加到数组中,但我们不会从类型检查器那里得到任何帮助。您应该始终显式设置空数组的类型。
const arr: boolean[] = []; // ✅ Works arr.push(true); // ⛔️ Error: Argument of type 'string' is // not assignable to parameter of type 'boolean'.ts(2345) arr.push('hello');
您可以使用这种方法来初始化任何类型的空数组。
const strArray: string[] = []; strArray.push('hello'); const objArray: { id: number }[] = []; objArray.push({ id: 1 }); const twoDimensionalArray: string[][] = []; twoDimensionalArray.push(['a', 'b', 'c']);
请注意语法是boolean[]
和不是[boolean]
。这通常是混淆的根源,但boolean[]
它是零个或多个 type 元素的数组
boolean
,并且[boolean]
是
具有单个元素的元组boolean
。
初始化空布尔数组的另一种方法是使用
类型断言。
const arr2 = [] as boolean[]; arr2.push(false); // ✅ OK // ⛔️ Error: Argument of type 'string' is // not assignable to parameter of type 'boolean'.ts(2345) arr2.push('hello');
Type assertions are used when we have information about the type of a value that
TypeScript can’t know about.
any[]
.Having the array typed as any[]
effectively turns off any type checking, so
it’s not what we want most of the time.
On the other hand, if you initialize the array with values, you can let
TypeScript infer its type.
// 👇️ const arr: boolean[] const arr = [true, false, true];
You could also use a type to define an array of strings.
type BooleanArray = boolean[]; const arr3: BooleanArray = [true, false, true];
If you have an object with a property that is a boolean array, you can also use
an interface.
interface Example { bools: boolean[]; } const arr3: Example = { bools: [true, true, false], };
In some cases, you might know that the array will only have N elements of a
specific type. You could use a tuple in this scenario.
const arr: [boolean, boolean] = [true, false];
我们上面声明的arr
变量是一个包含2
布尔值的元组。
如果您需要声明一个readonly
布尔值数组,请使用
Readonly
实用程序类型。
const arr: Readonly<boolean[]> = [true, false]; // ⛔️ Error: Property 'push' does not exist on // type 'readonly boolean[]'.ts(2339) arr.push(false);
我们将boolean[]
类型传递给Readonly
实用程序类型,因此数组只能读取,不能更改。
还有一种更具体的ReadonlyArray
实用程序类型可以实现相同的结果。
const arr: ReadonlyArray<boolean> = [true, false]; // ⛔️ Error: Property 'push' does not exist on // type 'readonly boolean[]'.ts(2339) arr.push(false);
请注意,我们传递了而boolean
不是
实用程序类型。boolean[]
ReadonlyArray