从 JavaScript 到 TypeScript - 声明类型

发布时间:2019-08-14 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了从 JavaScript 到 TypeScript - 声明类型脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

从 JavaScript 语法改写为 TyPEScript 语法,有两个关键点一点是类成员变量(Field)需要声明,另一点是要为各种东西(变量、参数、函数/方法等)声明类型。而这两个点直接引出了两个关键性的问题,有哪些类型?怎样声明?

类型

在说 TypeScript 的类型之前,我们先复习一下 JavaScript 的七种类型:

这七种类型都是可以通过 typeof 运算符算出来的,但其中并没有我们常见的 ArraynullDate 之类的类型——因为它们其实都是 object

TypeScript 的重要特性之一就是类型,所以 TypeScript 中的类型要讲究得多,除了 JavaScript 中的类型之外,还定义了其它一些(不完全列表)

  • Array<T>,或 T[],表示 T 类型的数组

  • null,空类型,其作用与 strictNullChecks 编译参数有关

  • Tuple(元组),形如 [Number, String]

  • enum T,定义枚举类型 T,可理解为集中对数值常量进行命名

  • interface T,接口,T 是一种接口类型

  • class T,类,T 是一种类型

  • any,代表任意类型

  • void,表示没有类型,用于声明函数类型

  • never,表示函数不可返回的神奇类型

  • ……

具体的类型这里就不详述了,官方 HandBookBasic TypeInterfacesClassesEnumAdvanced Types 这几部分说得非常清楚。

不过仍然有一种类型相关的特性不得不提——泛型。如果只是说数据类型,纯粹的 JSer 们还可以理解,毕竟类型不是新鲜玩意儿,只是扩展了点种类。但是泛型这个东西,纯粹的 JSer 们可能就没啥概念了。

泛型主要是用一个符号来表示一些类型,只要是符合约束条件(默认无约束)的类型,都可以替换掉这个类型符号来使用,比如