TS基础04
枚举
枚举允许我们定义或声明一组相关值,可以是数字或者字符串作为一组命名常量 默认枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射,第一位赋值后,其他值依次递增
enum week{ Sun, Mon, Tue, Wed, Thu, Fri, Sat } console.log(week.Sun) //0 console.log(week.Mon) //1
类型收窄
变量可以从不太精确的类型转移到更精确的类型,这个过程称为类型收窄。
interface vehicle{ topSpeed:number } interface Train extends vehicle{ carriages:number } interface Plane extends vehicle{ wingspan:number } type planeOrTrain = Train|Plane function getspeedRadio(v:planeOrTrain){ // console.log(v.carriages)//ERROR: 'carriages' doesn't exist on type 'Plane' }
由于 getSpeedRatio 函数处理了多种类型,我们需要一种方法来区分 v 是 Plane 还是 Train 。我们可以通过给这两种类型一个共同的区别属性来做到这一点,它带有一个字符串值:
interface Train extends vehicle{ carriages:number type:'Train' } interface Plane extends vehicle{ wingspan:number type:'Plane' } type planeOrTrainnew = Train | Plane function getnewspeedRadio(v:planeOrTrainnew){ if(v.type==='Train'){ return v.topSpeed/v.carriages } return v.topSpeed/v.wingspan } let bigTrain:Train={ type:'Train', topSpeed:100, carriages:20 } let speed = getnewspeedRadio(bigTrain) console.log(speed)
评论(0)
暂无评论