TypeScript(类型)

104 阅读2分钟

ts类型:字符串、数字、布尔、空值、null和undefined、any、unknown

1.字符串

//普通声明
let str:string = '掘金'
//es6字符串模版
let str1:string = `${str}社区`
console.log(str)//掘金
console.log(str1)//掘金社区

2.数字类型

//普通数字
let num:number = 123
//十六进制
let num1:number = 0xf00d
//八进制
let num2:number = 0o744
//二进制
let num3:number = 100011100
//NaN
let num4:number = NaN
//Infinity
let num5:number = Infinity
console.log(num)

3.布尔类型

//接收布尔值
let flag:boolean = false
console.log(flag)//false

//接收布尔对象
let bool:Boolean = new Boolean(2)
console.log(bool)//[Boolean: true]
console.log(bool.valueOf())//true

4.空值类型

用法:主要是用在我们不希望调用者关心函数返回值的情况下,比如通常的异步回调函数

function voidFun():void{
    console.log(123)
}
voidFun()//123

//void也可以定义undefined 和 null类型
let b:void = undefined
let c:void = null

5.null和undefined类型

let u: undefined = undefined;//定义undefined
let n: null = null;//定义null

注意:与 void 的区别是,undefined 和 null 可以赋值给所有类型,反之void不能赋值给其他类型

//这样写会报错 void类型不可以分给其他类型
let test: void = undefined
let num2: string = "1" 
num2 = test

//这样是没问题的
let test: null = null
let num2: string = "1"
num2 = test
 
//或者这样的
let test: undefined = undefined
let num2: string = "1"
num2 = test

6.any顶级类型

let a:any = 123
let b:any = false
let c:any = 'juejin'
let d:any = null
let e:any = undefined

简化:

let a = 123
let b = false
let c = 'juejin'
let d = null
let e = undefined


//如果是any类型在对象没有这个属性的时候还在获取是不会报错的
let obj:any = {b:1}
obj.a

注意: 如果使用any 就失去了TS类型检测的作用

7.unknown类型

unknown 字面理解和 any 其实没差,任何类型都可赋值给它,但有一点,unknown 类型不能赋值给除了 unknown 或 any 的其他任何类型,使用前必需显式进行指定类型,或是在有条件判断情况下能够隐式地进行类型推断的情况

//下面代码是合法的:
let a: unknown;
const b: unknown = a;
const c: any = a;

//下面代码是不合法的:
let a: unknown;
// 🚨Type 'unknown' is not assignable to type 'number'.ts(2322)
const b: number = a;

   
//如果是unknow 是不能调用属性和方法
let obj:unknown = {b:1,ccc:():number=>213}
obj.b
obj.ccc()