TypeScript报错:Type 'string' is not assignable to type 'number' 如何解决?
解决TypeScript中"Type 'string' is not assignable to type 'number'"错误
你的问题根源是类型不匹配:
- 变量
realAge初始值为数字0,TypeScript会自动推断它的类型是number。 - 但你在
if分支里给它赋值了字符串'4 years',这违反了TypeScript的类型约束,所以抛出错误。
根据你的需求,有两种解决方式:
方式一:仅保留年龄数值(推荐)
如果核心需求是计算狗的年龄,只需要存储数字类型的年龄即可,把字符串里的数字单独提取出来:
let aged = true; let realAge = 0 ; if (aged) { realAge = 4; // 改为纯数字,移除"years"字符串 } let dogAge = realAge * 7; console.log(`${dogAge} years`);
方式二:保留年龄文本(需调整类型处理)
如果必须保留"years"文本,你需要修改变量类型或者拆分数据:
方案1:使用联合类型并添加类型判断
把realAge的类型设为number | string(既可以是数字也可以是字符串),但计算前要先判断它的类型,避免运算错误:
let aged = true; let realAge: number | string = 0 ; if (aged) { realAge = '4 years'; } // 仅当realAge是数字时才计算狗的年龄 let dogAge = typeof realAge === 'number' ? realAge * 7 : 0; console.log(`${dogAge} years`);
方案2:拆分数值与单位
更规范的做法是把年龄数值和单位分开存储,确保数值类型始终正确:
let aged = true; let realAgeNum = 0 ; const ageUnit = 'years'; if (aged) { realAgeNum = 4; } let dogAge = realAgeNum * 7; console.log(`${dogAge} ${ageUnit}`);
内容的提问来源于stack exchange,提问作者Hiba Youssef
相关产品推荐
相关产品推荐

