1.三斜杠指令

/// <reference path="..." />指令是三斜线指令中最常见的一种。 它用于声明文件间的 依赖

三斜线引用告诉编译器在编译过程中要引入的额外的文件

2.成员修饰符 public|| private ||protect

在TypeScript里,成员都默认为 public

当成员被标记成 private时,它就不能在声明它的类的外部访问

protected修饰符与 private修饰符的行为很相似,但有一点不同, protected成员在派生类中仍然可以访问

 

3.console.log(Animal moved ${distanceInMeters}m.);

括号内含有反向字符串,${distanceInMeters}相当于 js 中+‘distanceInMeters’

4.继承

class Animal {
move(distanceInMeters: number = 0) {
console.log(Animal moved ${distanceInMeters}m.);
}
}
class Dog extends Animal
{
bark() {
console.log('Woof! Woof!');
}
}
const dog = new Dog();
dog.bark();
dog.move(10);
dog.bark();

这里, Dog是一个 派生类,它派生自 Animal 基类,通过 extends关键字。 派生类通常被称作 子类,基类通常被称作 超类

5.

for..offor..in均可迭代一个列表;但是用于迭代的值却不同,for..in迭代的是对象的 的列表,而for..of则迭代对象的键对应的值。

6.每个模块都可以有一个default导出。 默认导出使用 default关键字标记;并且一个模块只能够有一个default导出。 需要使用一种特殊的导入形式来导入 default导出

7.

extends 是继承某个类, *继承之后可以使用父类的方法, 也可以重写父类的方法*;

implements 是实现多个接口, *接口的方法一般为空的, 必须重写才能使用*

8.d.ts文件

要想描述非TypeScript编写的类库的类型,我们需要声明类库所暴露出的API。

我们叫它声明因为它不是“外部程序”的具体实现。 它们通常是在 .d.ts文件里定义的。

9.命名空间(解决重名问题)

“内部模块”现在叫做“命名空间”。 另外,任何使用 module关键字来声明一个内部模块的地方都应该使用namespace关键字来替换。

外部命名空间一般在d.ts文件中 使用declare namespace关键字

D3.d.ts
declare namespace D3 {
export interface Selectors {
}
}

因为我们想让这些接口和类在命名空间之外也是可访问的,所以需要使用 export

10.Mixins(混入)

除了传统的面向对象继承方式,还流行一种通过可重用组件创建类的方式,就是联合另一个简单类的代码。