typescript类型断言、联合类型、交叉类型

39 阅读1分钟

联合类型

let phone:number | string = '084-2142'
function phones(someting:number | boolean):boolean{
    return !!someting
}

交叉类型:多种类型的集合,联合对象将具有联合类型的所有成员

interface People {
    name:string,
    age:number
}
interface Man {
    sex:string
}
const lisi = (man:Prople & Man) => {

}

类型断言:值 as 类型 或者 <类型>值

需要注意的是:类型断言只能够“欺骗”TypeScript编译器,无法避免运行时的错误,不能滥用。

interface A {
    run:string
}
interface B {
    build:string
}
function fn(type:A | B){
   return (type as A).run
}

//类型断言是不具有影响力的,在下面的例子中,将num断言为bollean,编译可以通过但是不会有什么影响
function toBlooean(num:number){
    return num as blooean
}
toBlooean(1)// 1

as const:是对字面量的断言

let a = [1,2] as const
const b = [1,2]

a.unshift(30)//报错。此时已经断言字面量为[1,2],数据无法修改
b.unshift(30)//通过,没有修改指针