【问题标题】:What type is [boolean]?[boolean] 是什么类型?
【发布时间】:2016-02-03 22:55:47
【问题描述】:

请看下面的代码sn-p:

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[] 类型有什么区别?

【问题讨论】:

    标签: typescript


    【解决方案1】:

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

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

    [ T0, T1, ..., Tn ]
    

    组合属性集

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

    具有元素类型为元组元素类型的联合类型(3.4 部分)的数组类型的成员。

    由于[boolean],第0个元素的类型必须是booleanb = []失败(第0个元素的类型是undefined),b = a失败(ba是不同的类型,而a 的类型保证第 0 个元素(如果有)将包含一个布尔值,但不保证会有一个)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-12
      • 2022-07-22
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      • 2017-06-29
      • 1970-01-01
      • 2013-01-14
      相关资源
      最近更新 更多