类型
number
string
boolean
字面量
- 限制该变量的值就是该字面量的值
//直接使用字面量进行类型声明 let a: 10 //a的值只能是10 a = 10 //a = 20或其它值是错的 //可以使用 | 连接多个类型(联合类型) let b:'male' | 'female' b = 'male' b = 'female' let c:boolean | string c = true c = 'hello'
any
- any 表示任意类型,一个变量设置类型为any相当于对该变量关闭TS的类型检测
- 使用ts不建议使用any类型
- 声明变量如果不指定类型,则TS会自动判断类型为any(隐式any)
let d //或 let d :any d = 10 d = true d = 'hello'
unknown
- 表示未知类型的值
- unknown 实际上就是一个类型安全的any
- unknown 类型的变量不能直接赋值给其他变量
let e :unknown e = 10 e = 'hello' e = true let s :string //d的类型是any,它可以赋值给任意变量 //s = d if(typeof e === 'string'){ s = e } //类型断言,可以用来告诉解析器变量的实际类型 s = e as string
void
- 用来表示为空,以函数为例,表示没有返回值的函数
- 空值(undefined)
function fn2():void{}
never
-
表示永远不会有返回值
function fn3() : never{ throw new Error('报错了') }
object
- 表示一个js对象
- {}用来指定对象中可以包含哪些属性
- 语法:{属性名:属性值,属性名:属性值}
- 在属性名后面加一个 ? 表示属性是可选的,可以用也可以不写
- [propName:string]:any 表示任意类型的属性(对象里面不知道具体有多少个属性一一对应时可以用)
- 设置函数结构的类型声明
- 语法: (形参:类型,形参:类型…) => 返回值
let b:{name: string} b ={name:'你好'} let c: {name:string, age?:number} c = {name:'hello',age:18} let d:{name: string,[propName:string]; any} d = {name:'张三',age:18,gender:'男'} let fn: (a:number, b:number) => number fn = function(n1:string, n2:sting):number{ return 10 }
array
-
类型[]
-
Array<类型>
let e: string[] e = ['a','b','c'] let g Array<number> g = [1,2,3]
tuple(元组)
-
元组是固定长度的数组
-
语法:[类型,类型,…]
let h = [string,number] h = ['hello',123]
enum(枚举)
enum Gender{
Male = 0,
Female = 1
}
let i: {name:string,gender:Gender}
i = {
name:'冰墩墩',
gender:Gender.Male
}
console.log(i.gender === Gender.Male)
补充
//1. &表示同时
let j:{name:string} & {age: number}
j = {name:‘雪容融’,age:18}
//类型的别名
type myType = 1 | 2|3|4
let k: myType
let l:myType