基础类型
基本类型:boolean、number、string
数组:let list: number[] = [1,2,3,4] 或者 let list: Array = [1,2,3,4]
元组:let x: [number,string] = [1,‘vapour’] (元组类型允许表和表示一个已知元素数量和类型的数组,各元素的类型不必相同)
枚举:(提供一个映射关系,即MALE映射0,FEMALE映射1,通过Sex[0]或者Sex[MALE]取值)
enum Sex {
'MALE' ,
'FEMALE' ,
'UNKNOWN'
}
const sexConvert = {
[ Sex. MALE ] : '男' ,
[ Sex. FEMALE ] : '女' ,
[ Sex. UNKNOWN ] : '未知' ,
}
let sex: Sex = sexConvert[ Sex. MALE ]
Object: (Object类型的变量只是允许给他赋任意值,但是不能够在它上面调用任意的方法,即便它真的有这些方法)
any: let list: any[] = [1,true,false,‘vapour’] (允许在编译时移除类型检查)‘
void
function fn ( ) : void {
}
const fn1 = function ( ) : void {
}
const fn2 = ( ) : void => {
}
let x: void = undefined
null 和 undefined 默认情况下null和undefined是所有类型的子类型。 就是说可以把 null和undefined赋值给number类型的变量。
never (基本用不到)
类型断言 两种形式:
let someValue: any = 'this is a string' ;
let strLength: number = ( someValue as string) . length
let strLength: number = ( < string> someValue) . length
显示赋值断言 “!” 前提情节: ts2.7引入了一个新的flag:–strictPropertyInitialization。这个flag检查并确保一个类 在初始化时,每一个属性都必须在构造器内初始化,或者在属性定义时赋予初始值 解决办法: a. 一种解决办法是把 foo 的类型改成 boolean | undefined b. foo!: number; (由用户自己保证,这个属性在使用前会初始化,类型检查不管这个属性) —> 官方把这个属性称为 Definite Assignment Assertions,中文文档翻译为显式赋值断言。