《TypeScript图形渲染实战:2D架构设计与实现》 —2.4.4 TypeScript中的类型别名

举报
华章计算机 发表于 2019/12/12 11:55:31 2019/12/12
【摘要】 本节书摘来自华章计算机《TypeScript图形渲染实战:2D架构设计与实现》 一书中第2章,第2.4.4节,作者是步磊峰。

2.4.4  TypeScript中的类型别名

  XMLHttpRequestResponseType这个类型用来指示返回的请求资源的类型。下面来看一下该类型是如何定义的。

  可以在VS Code中,将鼠标指针定位到doGet方法的参数类型XMLHttpRequest ResponseType上,然后按住Ctrl键不放,单击鼠标左键,就可以定位到XMLHttpRequest ResponseType的代码声明处,如图2.6所示。

 image.png

图2.6  XMLHttpRequestResponseType的定义

  XMLHttpRequestResponseType的取值中,"arraybuffer"和"blob"返回二进制文件,可以使用TypeScript / JavaScript中的ArrayBuffer和Blob类进行二进制读写。关于ArrayBuffer和Blob的相关知识点,请大家参考JavaScript官方文档。

  XMLHttpRequestResponseType实际上是一个类型别名。在TypeScript中可以使用type关键字来声明类型别名,类型别名的实际类型不变,它们仅仅是个替代的名字而已。例如XMLHttpRequesetResponseType的类型还是string,其取值范围使用了“|”符号,表示联合类型,在第1章中已经了解过了。

  type关键字和C/C++中的typedef作用是一样的,在C/C++中经常对模板实例化类型进行typedef重定义(取别名),目的是减少输入,让代码更清晰且容易理解。在TypeScript中也一样,例如可以使用type关键字重定义IEnumerator < IDoom3Token >迭代器,代码如下:

 

type TokenEnumerator = IEnumerator < IDoom3Token > ;

 

  再假设,有一个泛型树数据结构,该结构可以挂接例如number类型的节点,现在我们想使用迭代器来迭代树节点,来对比一下如下代码:

 

// 不使用type关键字来声明类型别名

let nodeEnumerator : IEnumerator < TreeNode < number > > ;

// 使用type关键字来声明类型别名

type NodeEnumerator = IEnumerator < TreeNode < number > > ; // 一次定义,后续多次使用别名

let nodeEnumator : NodeEnumerator ;

 

  可以看到,代码更加清晰、容易理解了,如果读者看过C++ 标准模板库的代码,就会知道没有类型别名将是多么痛苦的事情了。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。