本文内容如下
类型推断,类型断言,类型保护,命名空间模块
如果你都有了答案,可以忽略本文章,或去TS学习地图寻找更多答案
类型推断
不写注解,TS会自动帮推断出类型
let x = 123 //推断为数字类型
let x = [0, 1, null] //推断为联合类型
最佳通用类型
class Animal{
numlegs:number
}
class Bee extends Animal{
}
class Lion extends Animal{
}
let zoo = [new Bee(), new Loin()] //推断出联合类型
let zoo: Animal[] = [new Bee(), new Loin()] //声明类型
类型断言 type assertion
定义:告诉编译器,你比它更了解类型,它不应该再发生错误,也就是该代码在运行时,会得到该结果.
语法:使用 as
场景:联合类型,ts不知道是什么时
ts拒绝可能,拥抱肯定
写法一:
如果不断言,可能拿不到length,因为有可能传number
function getLength(input:number | string):number{
const str = input as String //断言为string
if(str.length){
//可以使用string的length
return str.length
}else{
const number as Number //断言为number
return number.toString().length
}
}
写法二:断言写法二
function getLength(input:number | string):number{
if((<string