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)
暂无评论