TypeScript 1.3

受保护成员

在类中新的 protected 标示符就像它在其他一些像 C++, C# 与 Java 这样的常见语言中的功能一致. 一个 protected (受保护的) 的成员仅在子类或者声明它的类中可见:

  1. class Thing {
  2. protected doSomething() { /* ... */ }
  3. }
  4. class MyThing extends Thing {
  5. public myMethod() {
  6. // 正确, 可以在子类中访问受保护成员
  7. this.doSomething();
  8. }
  9. }
  10. var t = new MyThing();
  11. t.doSomething(); // 错误, 不能在类外调用受保护成员

元组类型

元组类型可以表示一个数组中部分元素的类型是已知, 但不一定相同的情况. 举例来说, 你可能希望描述一个数组, 在下标 0 处为 string, 在 1 处为 number:

  1. // 声明一个元组类型
  2. var x: [string, number];
  3. // 初始化
  4. x = ['hello', 10]; // 正确
  5. // 错误的初始化
  6. x = [10, 'hello']; // 错误

当使用已知的下标访问某个元素时, 能够获得正确的类型:

  1. console.log(x[0].substr(1)); // 正确
  2. console.log(x[1].substr(1)); // 错误, 'number' 类型没有 'substr' 属性

注意在 TypeScript 1.4 中, 当访问某个下标不在已知范围内的元素时, 获得的是联合类型:

  1. x[3] = 'world'; // 正确
  2. console.log(x[5].toString()); // 正确, 'string' 和 'number' 都有 toString 方法
  3. x[6] = true; // 错误, boolean 不是 number 或 string