number
let a : number //指定a的类型为number
a=10
a=11
a='ww' // 此行代码会报错
a=11.1
string
let b:string
b='hello'
boolean
let c :boolean = true //设置默认值
or
let c = true
字面量,用法
let a=10 //限制a的值类型为 数值类型
let b: number | string //联合类型,限制类型范围
let b: "male" | "female" //联合类型,
any 任意类型, 相当于关闭TS对当前变量的类型检测。 一般不用
let d: any
d = 10
d='hello'
d=true
unknown
let e:unknown //未知类型
e = 10
e='hello'
e=true
any 和 unknown 的区别
a=d // any 类型可以赋值给任意变量
a=e // 会报错: unknow类型 不可以赋值给任何类型, 是一个类型安全的any变量
if(typeof e === 'number'){
a=e; //不报错
}
void 场景:设置函数返回值
function fnVoid():void{ // 可以返回nul,undefine
}
never 场景:设置函数返回值
function fnNever():never { //表示不会返回结果,常用场景抛出异常
throw new Error("Error !")
}
object 任意 js对象
let f :object; // 一般不用
let f1 = {} //表示一个对象
let f2 : {name: string}; //定义类型
f2 = {name:'shuxin'} //赋值
let f3 : {name: string,age?:number}; //定义类型,?表示可选类型,可不赋值
f3 = {name:'shuxin'} //赋值
let f4 : {name: string,age?:number, [propName:string]:any}; //定义类型,[propName:string]:any表示后面可以添加任意类型的属性
f4 = {name:'shuxin', gender: 'boy',age:12} //赋值
let f5 : {name: string, [propName:string]:string}; //定义类型,[propName:string]:string表示后面可以添加string类型的属性
f5 = {name:'shuxin', gender: 'boy'} //赋值
//定义函数
let g : (a:number,b:number)=>number
g=function(a:number,b:number):number{
return 10;
}
array 数组的两种声明方式
let h: string[]
h=['1','2','3']
let i: Array<number>
i=[1,2,3,4,5]
tuple
let j : [string,number]
j=['hello',124]
enum 枚举
enum Gender{
male=0,
female=1
}
let k:{name:string,gender:Gender}
Gender.male
类型别名
type myType = string
let n: myType
n='234'