什么类型是[布尔]?

时间:2016-02-03 11:30:42

标签: typescript

请查看以下代码段:

var a: boolean[] = [];
var b: [boolean];
a = [true, false, true];
b = [true, false];
b.push(true);
b = []; //compile error: 
b = a; // compile error

首先编译错误:

  

键入' undefined []'不能分配给' [boolean]'。财产' 0'   类型' undefined []'

中缺少

第二次编译错误:

  

输入' boolean []'不能分配给' [boolean]'。财产' 0'   在' boolean []'

类型中缺少

似乎[boolean]类型与array of boolean类似。但它并不完全一样。

[boolean]boolean[]类型之间有什么区别?

1 个答案:

答案 0 :(得分:3)

boolean[]array type[boolean]tuple type。这是what the spec says关于元组类型的第一部分:

  

元组类型表示具有单独跟踪的元素类型的JavaScript数组。元组类型使用元组类型文字编写(第3.8.5节)。元组类型将一组数字命名的属性与数组类型的成员组合在一起。具体来说,是元组类型

[ T0, T1, ..., Tn ]
     

结合了一组属性

{  
    0: T0;  
    1: T1;  
    ...  
    n: Tn;  
}
     

使用数组类型的成员,其元素类型是元组元素类型的union类型(section 3.4)。

由于使用[boolean],第0个元素的类型必须为booleanb = []失败(第0个元素的类型为undefined),{{1} }失败(b = ab是不同的类型,而a的类型保证第0个元素(如果有的话)将包含一个布尔值,它不会'保证会有一个)。