使用Yup.test时遇TypeScript错误:originalValue不存在于TestContext类型
解决Yup.test中context.originalValue的TypeScript类型错误
默认情况下,Yup的TestContext<AnyObject>类型并未包含originalValue属性,因此TypeScript会抛出该错误。你可以通过以下两种方式解决:
方式一:全局扩展TestContext类型
在项目的TypeScript声明文件(比如yup.d.ts)中添加以下代码,全局扩展Yup的TestContext接口:
import { TestContext } from 'yup'; declare module 'yup' { interface TestContext<TContext> { originalValue: string; // 根据实际值类型替换,比如你的场景是字符串 } }
这样所有用到TestContext的地方都会自动包含originalValue属性,无需每次单独指定类型。
方式二:在单个.test方法中指定类型
如果仅需在当前校验逻辑中使用,直接给context指定联合类型即可:
.test('00s', 'not a valid number', (value, context: TestContext<AnyObject> & { originalValue: string }) => { return context.originalValue.match(ssnRegex); }),
注意:将代码中的string替换为originalValue的实际类型(如数字、自定义类型等),能让类型检查更严谨。
内容的提问来源于stack exchange,提问作者me-me
相关产品推荐
相关产品推荐

