【问题标题】:Complex Types in Typescript, React [duplicate]Typescript,React 中的复杂类型
【发布时间】:2021-04-19 00:37:45
【问题描述】:

我想知道是否有一种方法可以创建由 Typescript/React 中的函数验证的类型。

例如,我希望它不是一个“字符串”类型,而是一个正则表达式:

interface Verify
{
  email: /.+@.*\.com/g;
}

正则表达式可能不起作用,但概念是道具类型是匹配正则表达式的字符串。

一个更通用和有用的方法是让输入通过一个函数来验证它:

interface AcceptableInput
{
  input: checkIfInputIsAcceptable(input)
}
let obj: AcceptableInput = { input: "works@working.com" }

然后检查输入的类型是否正确,它会使用一个函数来检查:

function checkIfInputIsAcceptable(input)
{
  if(typeof input === "string)
    return true;
  if(input instanceof AnotherInterface)
    return true;
  return false;
}

代码不起作用,但我希望它能够体现我所询问的概念。 我不确定这是否可能。任何解决方法也将不胜感激。

【问题讨论】:

    标签: reactjs typescript


    【解决方案1】:

    TypeScript 不会真正进行任何复杂的验证,因为它相当没有意义(因为您可以用不同的方式解决相同的问题,见下文)并且它使类型系统变得非常复杂。做这种事情的最好方法可能是通过类型保护和运行时验证代码。 (见https://www.typescriptlang.org/docs/handbook/advanced-types.html

    如果您要匹配一个非常基本的字符串模式,那么您还可以考虑查看 Typescript 4.1 中添加的模板文字类型(请参阅 https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 2017-10-21
      • 2018-03-12
      • 2020-07-18
      • 2022-08-07
      • 2019-11-18
      相关资源
      最近更新 更多