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

React中如何检查对象类型?TypeScript接口类型判断报错解决

解决TypeScript接口类型区分问题

你遇到的错误是因为TypeScript接口仅存在于编译阶段,运行时没有对应的构造函数,所以instanceof无法识别它。以下是两种简单的区分方法:

方法1:直接检查属性存在性

利用两个接口的独有属性做判断,TypeScript会自动进行类型推断:

const {mutate, isLoading, data} = useMutation(authRepository.Login, {
    onSuccess: (value: Temp | Temp1) => {
        if ('message' in value) {
            // 此处value被推断为Temp类型
            console.log(value.message);
        } else {
            // 此处value被推断为Temp1类型
            console.log(value.message1);
        }
    }
});

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

如果需要更清晰的逻辑封装,可以写一个类型守卫函数:

function isTemp(value: Temp | Temp1): value is Temp {
    return 'message' in value;
}

// 使用示例
const {mutate, isLoading, data} = useMutation(authRepository.Login, {
    onSuccess: (value: Temp | Temp1) => {
        if (isTemp(value)) {
            console.log(value.message);
        } else {
            console.log(value.message1);
        }
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:22:38