首先我们来看一下IDoom3Token接口的实现类,在TypeScript中使用implements关键字来实现一个接口,代码如下所示:
class Doom3Token implements IDoom3Token {
private _type : ETokenType ; // 标识当前token的类型 : NONE / STRING / NUMBER
private _charArr : string [ ] = [ ] ; // 字符串数组
private _val : number ; // 如果当前的token类型是NUMBER,则会设置该数值,如果是字符串类型,就忽略该变量
}
上面代码很简单,但是也有几个值得我们关注的地方:
- 在TypeScript / JavaScript中,并没有char这个数据类型,都是使用string类型来表示单个字符,我们在变量_charArr中存放的实际是char(一个字符)类型的数据。
- 在TypeScript中,有两种声明和实列化(内存分配)类型数组的方式,第一种就是我们上面所使用的方式,另外一种可以使用_charArray : Array < number > = new Array < string > ( )的方式,笔者更喜欢第一种方式来声明类型数组变量,简洁明了少写几个字。
- 我们会看到在声明IDoom3Token接口时使用了export关键字来导出接口,但是在实现类Doom3Token中并没有使用export关键字。这是接口的一个很棒的特性:我们只想暴露(export)接口(interface),我们想隐藏类(class)的实现,第三方调用时,只关心接口是怎么使用的,不需要知道具体类是怎么实现的。
- TypeScript支持public / protected / private 三个级别的访问修饰符,如果你没有在成员变量前声明访问修饰符,在默认情况下,被定义为public级别。关于三个访问修饰符的区别如下:
- 被public访问修饰符修饰的成员变量或方法能够被所有类访问。
- 被protected访问修饰符修饰的成员变量或方法既能被定义它的类也能被继承它的子类访问。
- 被private访问修饰符修饰的成员变量或方法只能被定义它的类访问,也就是说不能在声明它的类的外部访问。