TypeScript - 类型

21 阅读2分钟

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'