boxmoe_header_banner_img

Hello! 欢迎来到盒子萌!

加载中

文章导读

TS基础04


avatar
Jack 2023年 8月 12日 216

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)
ts


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码