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
相关产品推荐
相关产品推荐

