let
const
var(官方不推荐再继续使用)
number
string
boolean
array
null
undefined
object
tuple
enum
void
never
any
union 组合类型
Nullable 可空类型
Literal 预定义类型
number:表示 整数、浮点数、正负数
boolean:真 或者 假
string:""
、''
、``
``
,可以创建一个字符串模板array:[]
存放任意类型的数据
let list1: number[] = [1, 2, 3]
let list2: Array<number> = [1, 2, 3]
let list3 = [1, 'abc']
tupple:固定长度、固定类型的特殊数组
let person : [number, string] = [1, 'abc']
union:支持多个类型的赋值
let union1: string | number
literal:支持指定值的赋值
let literal1: 1 | '2' | true | [1, '2', false]
默认从0开始,可以指定值
enum Color{ red, green = 3 , blue = '蓝色' } let color1 = Color.blue console.log(color1) // 蓝色 console.log(Color.red) // 0 console.log(Color.green) //3
any:动态支持任意类型
unknown:未知类型,比any的限制性大一点
let randomValue:unknown if (typeof randomValue === 'function'){ randomValue() } if (typeof randomValue === 'string'){ randomValue.toUpperCase() }
void:没有声明的变量
function onlyPrint1():void{ console.log('---') }
undefined:申明的变量没有赋值
function onlyPrint2():undefined{ console.log('===') return }
nerver:执行不到终点
function throwErr(msg:string, code: number):never{ throw{ msg, code } console.log('执行不到这里') }
function whileLoop():never{ while(true){ console.log('>>>') } }
使用 Type Assertions 必须对自己的代码有 百分百 的把握才使用,不然运行时可能会出现类型错误
let msg:any msg ='strData' // 此时为 any类型 编辑器不会自动补全、联想出对应类型的方法 console.log(msg.replace('t', 'o')) // 方法一:(<类型>变量名) console.log((<string>msg).toUpperCase()) // 方法二:(变量名 as 类型) console.log((msg as string).split('a'))
给函数的参数指定类型
let log1 = (msg:string) => console.log(msg)
?
可使参数不用必须传递 默认值为 undefined
let log2 = (msg:string, code?:number) => console.log(msg,code)
设置参数默认值
let log3 = (msg:string, code:number=2) => console.log(msg,code)