简体   繁体   English

类型“NumberSchema”上不存在属性“长度”<number></number>

[英]Property 'length' does not exist on type 'NumberSchema<number>

i am getting error which one mention in title.i know what error is but don't get it how to solve it.我收到标题中提到的错误。我知道错误是什么,但不知道如何解决。

basically i am using 'Yup' for validation.基本上我正在使用“是的”进行验证。

added custom method添加了自定义方法

Yup.addMethod(Yup.number, 'length', function (length: number, message: string) {
  const tmessage = (typeof message == 'undefined') ? 'length must be ' + length : message;
    return Yup.number().test('length',tmessage,function(value: string | number) {
      return (typeof value == 'undefined') ? true : (value.toString().length === this.resolve(length));
    });
});

define validation schema定义验证模式

const validationSchema = Yup.object({
  name: Yup.string().required('Name is required'),
  email: Yup.string().email('Invalid Email').required('Email id required'),
  mobile: Yup.number().required('Mobile is required').length(10),
  message: Yup.string().required('Message is required')
});

i am getting typescript error on line我在线收到 typescript 错误

mobile: Yup.number().required('Mobile is required').length(10),

You can augment type definitions for the module like described in https://github.com/jquense/yup/issues/312#issuecomment-422666195 .您可以增加模块的类型定义,如https://github.com/jquense/yup/issues/312#issuecomment-422666195中所述。 In your case, create any .d.ts file in your project and insert this:在您的情况下,在您的项目中创建任何.d.ts文件并插入:

declare module "yup" {
    interface NumberSchema<T extends number | null | undefined = number> {
        length(length: number, message: string): NumberSchema<T>;
    }
}

Or not ideal but simple solution: disable type checking by using (Yup as any).number().required('Mobile is required').length(10) .或者不是理想但简单的解决方案:使用(Yup as any).number().required('Mobile is required').length(10)禁用类型检查。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM