function convertToNumber(param: string | number | boolean): number | undefined {
if (typeof param === 'number') {
return param;
} else if (typeof param === 'string') {
const num = parseFloat(param);
if (!isNaN(num)) {
return num;
}
} else if (typeof param === 'boolean') {
return param? 1 : 0;
}
return undefined;
}
类型保护在这个场景中的作用
- 确保安全转换:通过
typeof
进行类型检查,在执行特定转换逻辑前,确定参数的实际类型,防止在不适合的类型上进行转换。例如,对boolean
类型使用parseFloat
是没有意义的,通过类型保护可以避免这种情况。
- 代码健壮性:类型保护可以让代码在面对不同类型输入时,有明确的处理逻辑,提高代码的健壮性和稳定性,避免运行时因类型不匹配而抛出错误。
如何避免潜在的类型错误
- 详尽的类型检查:使用
typeof
等类型保护手段,对所有可能的输入类型(string
、number
、boolean
)进行检查,并为每种类型编写合适的转换逻辑。
- 错误处理:在转换过程中,如将
string
转换为number
时,使用isNaN
检查转换结果,避免返回无效的NaN
值。如果转换失败,返回undefined
等合适的默认值,而不是让错误继续传播。