TS 如何根据某个变量是否存在来约束另一个变量的类型?
场景再现:由于我们 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个回答
test
2024-06-23
直接统一成string
function getVersion() {
return `${(newFn ?? oldFn)()}`
}
if (appVersion === '1') { do something }
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容