TypeScript中如何处理string | number类型并实现数值加值操作?
TypeScript 处理
string | number 类型变量加40的实现方案 问题根源在于 parseInt 仅接受 string 类型参数,而你的变量是 string | number 联合类型,直接传递会触发类型不兼容错误。解决核心是通过类型守卫区分两种类型,分别处理:
基础实现方案
function add40(x: string | number): string | number { // 类型守卫:判断是否为number类型 if (typeof x === 'number') { return x + 40; } // 此时TypeScript自动收窄x为string类型,可安全调用parseInt const num = parseInt(x, 10); // 建议指定第二个参数10(十进制),避免解析异常 // 处理字符串无法解析为数字的边界情况(如"abc") if (isNaN(num)) { // 可根据业务需求调整:返回原字符串/抛出错误/返回默认值等 return x; } return (num + 40).toString(); }
更精确的类型重载方案
如果需要严格保持输入输出类型一致(输入number返回number,输入string返回string),可以用函数重载让类型提示更精准:
// 重载签名:定义不同输入对应的输出类型 function add40(x: number): number; function add40(x: string): string; // 实现签名:处理联合类型逻辑 function add40(x: string | number): string | number { if (typeof x === 'number') { return x + 40; } const num = parseInt(x, 10); if (isNaN(num)) { return x; } return (num + 40).toString(); } // 使用时TypeScript会自动推断返回类型 const numResult = add40(10); // numResult类型为number const strResult = add40("20"); // strResult类型为string
内容的提问来源于stack exchange,提问作者t44
相关产品推荐
相关产品推荐

