如何在Typescript中键入返回值?

时间:2019-04-13 10:48:53

标签: typescript typescript-typings

我能够提示参数的类型,但不能提示返回的类型。 我可以看到返回值是字符串还是未定义,但是由于某种原因,我的界面不被接受:

  

reEmail.test(值)

value给我以下错误:Argument of type 'ValidatorsProps' is not assignable to parameter of type 'string'.

interface ValidatorsProps {
  (value: string | number): string | undefined 
}

export const mustBeEmail = (value: ValidatorsProps) => {
  const reEmail = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return reEmail.test(value) ? undefined : "Email format is not correct";
};

有帮助吗?预先感谢

1 个答案:

答案 0 :(得分:0)

value具有接口类型,并且与字符串不兼容。 可能的解决方法是

export const mustBeEmail = (value: ValidatorsProps) => {
    const reEmail = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    var res = value('some argument');
    if (res !== undefined)
        return reEmail.test(res) ? undefined : "Email format is not correct";
    else
        // return something else
};

您应该致电value以获得结果,检查是否有undefined并传递给test