请查看以下代码段:
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[]
类型之间有什么区别?
答案 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个元素的类型必须为boolean
,b = []
失败(第0个元素的类型为undefined
),{{1} }失败(b = a
和b
是不同的类型,而a
的类型保证第0个元素(如果有的话)将包含一个布尔值,它不会'保证会有一个)。