MST
星途 面试题库

面试题:TypeScript中number类型与其他类型的相互转换及类型保护

给定一个函数,它接收一个参数,该参数可能是string、number或boolean类型。编写函数逻辑,将参数转换为number类型(如果可能的话),并使用类型保护来确保转换的安全性。同时,解释类型保护在这个场景中的作用以及如何避免潜在的类型错误。
28.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
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;
}

类型保护在这个场景中的作用

  1. 确保安全转换:通过typeof进行类型检查,在执行特定转换逻辑前,确定参数的实际类型,防止在不适合的类型上进行转换。例如,对boolean类型使用parseFloat是没有意义的,通过类型保护可以避免这种情况。
  2. 代码健壮性:类型保护可以让代码在面对不同类型输入时,有明确的处理逻辑,提高代码的健壮性和稳定性,避免运行时因类型不匹配而抛出错误。

如何避免潜在的类型错误

  1. 详尽的类型检查:使用typeof等类型保护手段,对所有可能的输入类型(stringnumberboolean)进行检查,并为每种类型编写合适的转换逻辑。
  2. 错误处理:在转换过程中,如将string转换为number时,使用isNaN检查转换结果,避免返回无效的NaN值。如果转换失败,返回undefined等合适的默认值,而不是让错误继续传播。