《TypeScript图形渲染实战:2D架构设计与实现》 —2.2 IDoom3Token与IDoom3Tokenizer
2.2 IDoom3Token与IDoom3Tokenizer接口的实现
在上一节中声明了IDoom3Token接口和IDoom3Tokenizer接口,本节来看一下这两个接口的具体实现过程,从中会发现接口和实现类之间的微妙关系,即接口规定了要做什么,接口的实现类则规定了应该怎么做。
2.2.1 Doom3Token类成员变量的声明
首先来看一下IDoom3Token接口的实现类,在TypeScript中使用implements关键字来实现一个接口,代码如下:
class Doom3Token implements IDoom3Token {
private _type : ETokenType ; // 标识当前Token的类型 : NONE / STRING / NUMBER
private _charArr : string [ ] = [ ] ; // 字符串数组
private _val : number ; // 如果当前的Token类型是NUMBER,则会设置该数值,
如果是字符串类型,就忽略该变量
}
上面的代码很简单,但是也有几个值得关注的地方,如下所述。
(1)在TypeScript / JavaScript中,并没有char这个数据类型,都是使用string类型来表示单个字符,在变量_charArr中存放的实际是char(一个字符)类型的数据。
(2)在TypeScript中,有两种声明和实列化(内存分配)类型数组的方式,第一种就是上面所使用的方式,另外一种可以使用_charArray : Array < string> = new Array < string > ( )的方式,笔者更喜欢第一种方式来声明类型数组变量,简洁明了。
(3)在声明IDoom3Token接口时使用了export关键字来导出接口,但是在实现类Doom3Token中并没有使用export关键字。这是接口的一个很棒的特性:只暴露(export)接口(interface),而隐藏类(class)的实现,第三方调用时,只关心接口是怎么使用的,不需要知道具体类是怎么实现的。
(4)TypeScript支持public、protected和private这3个级别的访问修饰符,如果没有在成员变量前声明访问修饰符,在默认情况下,被定义为public级别。3个访问修饰符的区别如下:
* 被public访问修饰符修饰的成员变量或方法能够被所有类访问。
* 被protected访问修饰符修饰的成员变量或方法既能被定义它的类访问,也能被继承它的子类访问。
* 被private访问修饰符修饰的成员变量或方法只能被定义它的类访问,也就是说不能在声明它的类的外部访问。
- 点赞
- 收藏
- 关注作者
评论(0)