TypeScript 常用类型语法 any unknown never void
1、any
any的值可以是任意类型,any的值可以赋值给任意类型,any值使用任意属性和方法不会报错
// any 的值可以是任意类型,any的值可以赋值给任意类型,any的值的任意属性方法不会报错 let a:any // 1.any的值可以是任意类型 a = 10 a = "abc" a = true let b:string // 2、any的值可以赋值给任意类型 b = a console.log(b, typeof b); // 3、any的值的任意属性方法不会报错 a = "bbbb" console.log(a.toUpperCase());
2、unknown
unknown的值可以是任意类型,unknown的值不能赋值给任意类型(加断言),unknown的值使用任意的方法和属性会报错(加断言)
// unknown的值可以是任意类型,unkonown的值不能赋值给任意类型(要加断言),unknown的值不能使用任意的方法和属性(加断言) let x:unknown // 1、unknown的值可以是任意类型 x = "bbm" x = false x = 10 // 2、unknown的值不能赋值给任意类型,会报错,需要加断言 let y:string y = <string>x console.log(y, typeof y); // unkonwon的值不能使用任意的方法和属性会报错,需要加上断言 x = "ddddd" console.log((<string>x).toUpperCase());
断言
对变量a进行断言,<类型>a 或者 a as 类型
let a:unknown a = "房贷好累" let b:string // 断言的两种方法 b = a as string // b = <string>a
3、never
never的值不能是任何类型(无意义),一般由TypeSript推断,限制函数返回值(抛出异常)
// never的值不能是任意数据类型(一般不用,没有任何意义),由TypeScript主动推断, 限制函数返回值包括 undefine和null let a:never // 1、never 的值不能是任意类型,无意义 // a = 10 报错 // a = "hello" 报错 // a = true 报错 // 2.never一般由TypeScript推断 let b:string b = "ddddddddd" if(typeof b == "string"){ console.log(b.toUpperCase()); }else{ console.log(b); } // 限制函数返回值,包括undefine和null,用于异常抛出 function test(x:string):never{ throw new Error(x) } console.log(test("abc"));
4、void
void的函数返回值类型为undefine,调用者不应依赖void函数返回值做任何操作
// void函数返回值为undefine,函数调用者不应该依赖函数的返回值做任何操作 function fun(s:string):void{ console.log(s); } let res = fun("Hello") if (res) { //飘红 console.log("xxxx"); }