MST

星途 面试题库

面试题:TypeScript中类型守卫与类型断言的基本应用对比

请分别使用类型守卫和类型断言来处理如下场景:定义一个函数,接收一个参数,该参数可能是字符串或数字,函数内部需要判断参数类型并返回其长度(对于字符串返回字符长度,对于数字返回其转为字符串后的长度),并简要说明类型守卫和类型断言在这种场景下各自的特点及优势。
33.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

使用类型守卫

function getLengthWithTypeGuard(arg: string | number): number {
    if (typeof arg === 'string') {
        return arg.length;
    } else {
        return arg.toString().length;
    }
}

使用类型断言

function getLengthWithTypeAssertion(arg: string | number): number {
    return (arg as string).length || arg.toString().length;
}

特点及优势

  • 类型守卫
    • 特点:通过运行时检查来确定类型,是一种基于逻辑判断的方式。
    • 优势:可靠性高,在运行时动态确定类型,确保类型安全,适用于复杂的类型判断逻辑。
  • 类型断言
    • 特点:告诉编译器“我知道这个值是什么类型”,是一种编译时的操作。
    • 优势:简洁直接,在明确知道值的类型时,可以快速处理,减少冗余代码。但如果断言错误,可能导致运行时错误。