先看代码
enum States{
idle,
run,
attack
}
//let state:States=Math.random()>0.7?States.idle:Math.random()>0.5?States.attack:States.run
let state:States=States.idle
switch(state){
case States.idle:
console.log("idle")
break
case States.run: //类型不匹配
console.log('run')
break
case States.attack: //类型不匹配
console.log('attack')
break
default:
console.log("其他情况")
}
初学TypeScript,发现静态类型的检查是很强大的?这里了说类型不匹配,根本上,应该是已知let state:States=States.idle是写死了的,所以TypeScript会检查有没有变化,如果没有变化的话,永远就执行这个case States.idle。
error TS2678: Type 'States.run' is not comparable to type 'States.idle'.
前面添加代码
let state:States=Math.random()>0.7?States.idle:Math.random()>0.5?
扩展了三个case都有可能的随机条件后,可以正常运行,所以在项目实际情况下应该是没有问题的。
如果有其他的理解留言告诉我一声哦。