类型是 TypeScript
相较于 JavaScript
增加的特性,也是 TpyeScript
的重点内容。
变量声明
声明变量的类型及初始值:
|
|
**注意:**变量不要使用 name
否则会与 DOM 中的全局 window 对象下的 name
属性出现了重名。
类型断言(C++ 中的强制类型转换,但并不完全是):
|
|
当 S 类型是 T 类型的子集,或者 T 类型是 S 类型的子集时,S 能被成功断言成 T。这是为了在进行类型断言时提供额外的安全性,完全毫无根据的断言是危险的,如果你想这么做,你可以使用 any。
它之所以不被称为类型转换,是因为转换通常意味着某种运行时的支持。但是,类型断言纯粹是一个编译时语法,同时,它也是一种为编译器提供关于如何分析代码的方法。
类型推断(C++ 中的 auto
):使用 var
关键字。
Any
类型
任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,类型核心在于不在编译时进行类型检查。
|
|
void
/null
/undefined
/never
void
:
- 用于标识方法返回值的类型,表示该方法没有返回值。
null
:
在 JavaScript 中 null 表示 “什么都没有”。
null 是一个只有一个值的特殊类型。表示一个空对象引用。
typeof null === 'object'
undefined
:
- 在 JavaScript 中,
undefined
是一个没有设置值的变量。 - typeof 一个没有值的变量会返回 undefined。
- null 和 undefined 是其他任何类型(包括 void)的子类型,可以赋值给其它类型,如数字类型,此时,赋值后的类型会变成 null 或 undefined。
- 而在 TypeScript 中启用严格的空校验特性,就可以使得 null 和 undefined 只能被赋值给 void 或本身对应的类型。
never
:
- never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。
- 这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点的函数;