联合类型|类型断言|交叉类型
联合类型
传哪一种类型都可以的联合类型
const fn = (v:number|boolean) => !!v
类型断言
const fn = (num:number|string)=>{
console.log((<string>num).length)
console.log((num as string).length)// as string 起到一个告诉ts这是一个string类型数据,这样在使用.length时不会报错
}
fn('12')// 当真的是string时正常输出 长度2
fn(122)// 但是当是number的数据类型时,实际上确实还是number数据,不会转化为string导致读不到.length属性返回undefined
交叉类型
interface A{
name: string;
}
interface B{
age: number;
}
const a:A&B={//此时a的数据类型被声明为string name 和 number age 接口类型AB并没有因为&号发生改变,如果需要影响到的话建议使用extends
name:'x',
age:5,
}