TS 如何根据某个变量是否存在来约束另一个变量的类型?

作者站长头像
站长
· 阅读数 4

场景再现:由于我们 app 版本更新,有一个获取系统状态的函数进行了重构,为了兼容这个函数,我是这样设计代码的。(下面只是模拟场景的伪代码)

///老代码 返回一个 number 类型的1
function oldFn(){
return 1
}

///新代码 返回一个 sting 类型的 "1"
function newFn(){
return "1"
}

我在使用的地方是这样兼容的

function getVersion(){
    if(newFn){
    newFn()
    }
    else{
    oldFn()
    }
}

const appVersion =getVersion()

此时我的 appVersion 就是 string|number类型的值。我之前在用到版本信息判断的地方就需要大改

之前
if(appVersion===1){do something}

现在
if(appVersion===1||appVersion==="1"){do something})

有没有什么好的建议或者 TS 类型断言来帮我简化这些地方呢?

回复
1个回答
avatar
test
2024-06-23

直接统一成string

function getVersion() {
  return `${(newFn ?? oldFn)()}`
}

if (appVersion === '1') { do something }
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容