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

升级依赖后Yup校验中DefaultTFuncReturn类型不兼容问题求助

全局修复Yup校验与i18next类型不兼容问题

方法1:扩展Yup的类型定义

在项目src目录下创建yup.d.ts文件,添加以下代码全局扩展Yup的类型,让Message类型兼容i18next的DefaultTFuncReturn:

import { DefaultTFuncReturn } from 'i18next';
import { Message } from 'yup';

declare module 'yup' {
  interface Message<TContext> {
    (this: TContext): DefaultTFuncReturn;
    default?: DefaultTFuncReturn;
  }
}

TypeScript会自动识别这个文件,无需修改原有业务代码即可解决类型冲突。

方法2:创建统一的消息包装函数

写一个简单的包装函数,将translate返回值转换为Yup接受的格式,之后批量替换原有代码:

import { t } from 'i18next';

export const yupMsg = (key: string, options?: any) => {
  return { default: t(key, options) } as const;
};

替换后的校验代码示例:

// 原错误写法
yup.string().max(10, t('validation.maxLength'))

// 修改后
yup.string().max(10, yupMsg('validation.maxLength'))

方法3:临时跳过库类型检查(不推荐)

若需要快速应急,可在tsconfig.json中添加配置跳过所有第三方库的类型检查,但可能隐藏其他潜在问题:

{
  "compilerOptions": {
    "skipLibCheck": true
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:50:33