You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中为异常指定类型以兼容TS编译器与ESLint

解决方案

以下几种方法可以同时满足TypeScript编译器和ESLint的要求:

方法一:使用unknown类型并进行类型收窄

TypeScript中catch语句的error默认类型是unknown,显式声明为unknown后,通过类型检查收窄类型再访问属性,既符合TS的类型安全要求,又避免了any触发ESLint规则:

try {
    console.log("test");
} catch (error: unknown) {
    // 先判断error是对象且存在message属性
    if (typeof error === 'object' && error !== null && 'message' in error) {
        console.log(error.message);
    } else {
        // 处理非Error类型的错误,比如字符串、数字等
        console.log(String(error));
    }
}

方法二:自定义类型守卫函数

如果你的业务场景中主要处理Error实例,可以定义一个类型守卫函数来复用类型判断逻辑:

// 类型守卫:判断输入是否为Error类型
function isError(error: unknown): error is Error {
    return typeof error === 'object' && error !== null && 'message' in error;
}

try {
    console.log("test");
} catch (error: unknown) {
    if (isError(error)) {
        console.log(error.message);
    } else {
        console.log('未知错误:', error);
    }
}

方法三:类型断言为Error(谨慎使用)

如果能确定抛出的错误一定是Error实例,可以使用类型断言,但这种方式存在运行时风险(若抛出非Error类型会导致报错),仅在明确场景下使用:

try {
    console.log("test");
} catch (error: unknown) {
    console.log((error as Error).message);
}

内容的提问来源于stack exchange,提问作者StaticMethod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:02:35