TS数据类型
类型 |
例子 |
number |
1,-32,3.6 |
任意数字 |
string |
hi,’hu’,”hi” |
任意字符串 |
boolean |
true,false |
布尔值 |
any |
* |
任意类型 |
unknown |
* |
类型安全的any |
void |
undefined |
空值或undefined |
never |
没有值 |
不能是任何值 |
object |
{name:’张大’} |
任意JS对象 |
array |
[1,2,3] |
任何JS数组 |
tuple |
[1,2,3] |
元组,TS新增类型,固定长度数组 |
enum |
enum(a,b) |
枚举,TS新增类型 |
简单示例
let a: number // 定义number类型的值,以后赋值只能是数字类型
let b: string // 定义string类型的值,以后赋值只能是字符串
let c: boolean // 定义boolean类型的值,以后赋值只能是数字布尔类型
let d: boolean | string // 定义可以赋值布尔或者字符串类型
let e: any // 设置任何类型,可以赋值给任何类型变量。
let f: unknown // 未知类型,unknown是安全类型的any,但是不能赋值给其他变量。
//变量和变量赋值,只能是同类型。
c = d as string //类型断言,可以用来告诉c是字符串
c = <string>d //类型断言简写
function fn(num) :number{// 设置返回值类型
return num
}
function fn2(num) :void{// 表示没有返回的值,可以不写return
return //1种写法
return null //2种写法
return undefined //2种写法
}
function fn3(num) :never{// 表示永远不会返回值,null,undefined都没有,适合用于报错
throw new Error('报错!!!')
}
let b: object // 对象类型
let b = {}
let b = function (){}
let r: {name:string,age?:number} // ?表示可以不传的类型
r = {name:'张三'}
let r: {name:string,[propname:string]:any} // [propname:string]表示属性名是字符串,任意写多少属性,:any属性值是什么类型
r = {name:'张三',age:15,render:'男'}
let func: (a:number,b:number)=>number //箭头函数限制接受的值,和返回的值
let e: Array<number> // 表示数组里面只能放数字
let e: string[] // 表示数组里面只能放字符串
let t: [string,number] //元组类型,就是固定长度的数组
h = ['hello',123]
enum Gender{//Enum枚举类型
male = 0,
female = 1
}
let i:{name:string,grnder:Gender}
i = {name:'猴子',gender:Gender.male}
let j:{name:string} & {age:number} // &表示同时类型
j = {name:'猴子',age:18}
type mytype = 1 | 2 | 3 //类型别名
let k: mytype
let o: mytype
k=3
function f1<t,k>(a:t,b:k):t {//泛型
return a
}
f1<number,number>(1,4)