- Published on
TypeScript 从入门到放弃之基础类型
介绍 TypeScript 的基础类型定义与相关注意事项。
布尔
boolean
数字
number
JavaScript 中所有数字都是浮点类型
字符串
string
数组
Array[number]
/ number[]
元组
类似 [string, number]
这样的类型定义
枚举
enum Color {Red, Green, Blue}
enum Color {
Red = 1,
Green,
Blue,
}
let colorName: string = Color[2]
console.log(colorName) // Displays 'Green' as its value is 2 above
Any
any
Void
void
通常用来标记函数无返回值
let unusable: void = undefined
Null and Undefined
// Not much else we can assign to these variables!
let u: undefined = undefined
let n: null = null
默认情况下,null
和 undefined
是其他所有类型的子类型。这也就意味着可以为 number
类型的变量赋值 null
和 undefined
。
可以通过 --strictNullChecks
标记,使得 null
和 undefined
只能对 any
和他们自身赋值(一个特殊情况就是,仍然可以为 undefined
赋值 void
)。这样可以避免很多常见错误。如果需要传递的类型包含 string
、null
或 undefined
,可以使用联合类型定义 string | null | undefined
。后续会详细讲解联合类型。
官方推荐尽可能开启
--strictNullChecks
,但是手册还是以默认关闭的方式讲解。
Never
never
表示这个值不会出现。例如,当函数返回值总是异常或者没有返回值(死循环)时,函数返回值类型为 never
;变量也可能为 never
类型
Variables also acquire the type
never
when narrowed by any type guards that can never be true.
虽然这句话没看懂 _(:3J∠)_
Object
object
代表变量为非原始类型,即非 number
, string
, boolean
, symbol
, null
或者 undefined
。
With object type, APIs like Object.create can be better represented. For example:
declare function create(o: object | null): void create({ prop: 0 }) // OK create(null) // OK create(42) // Error create('string') // Error create(false) // Error create(undefined) // Error
大概是在初始化类对象的时候会用到?但是这样的话可以通过定义 interface 或者 type 实现的,所以暂时搞不清这个有何具体应用场景。
类型断言
有些时候,开发者会比编辑器更清楚变量类型,这样就有了类型断言。类型断言让编辑器相信我们所作所为。这和其他语言的类型转换相似,但是不会执行一些特殊的检查或者重构数据结构。也就不会产生任何运行时的影响,仅作为编译时类型检查。
类型检查有两种形式,一是“尖括号”语法:
let someValue: any = 'this is a string'
let strLength: number = (<string>someValue).length
另一种是 as
语法。
let someValue: any = 'this is a string'
let strLength: number = (someValue as string).length
当结合 React 开发的时候,只能使用 as
语法。