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..of
和for..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(混入)
除了传统的面向对象继承方式,还流行一种通过可重用组件创建类的方式,就是联合另一个简单类的代码。