当前位置: 首页 > 知识库问答 >
问题:

javascript - 类型体操,请为获取对象的路径写一下类型么,诸如 “a.b.c", "a.b" 这种字符串?

李兴安
2024-04-30
const str1: Path = "a.b" // goodconst str2: Path = "a.b.c"  // goodconst str3: Path = "a..b" // false

共有3个答案

陈毅
2024-04-30

能知道类型的话可以参考element-plusFieldPath
https://github.com/element-plus/element-plus/blob/dev/packages/components/form/src/types.ts#L93

仲孙磊
2024-04-30

不行,这个是你的业务代码,需要你自行处理。
给你一个场景就明白了:
假如从后端获取了一个数据:const obj = { path: '名字' }
前端能和后端约定 obj.path 是个字符串,但无法预知字符串是否符合你的期望格式

费凯康
2024-04-30

在 TypeScript 中,你可以使用字符串字面量类型(String Literal Types)来定义一组特定的字符串值。但是,由于字符串字面量类型只能定义一组固定的值,而不能定义具有特定模式的字符串,因此无法直接定义如 "a.b.c", "a.b" 这样的模式。

不过,你可以使用正则表达式或者自定义类型守卫来检查字符串是否符合你想要的路径模式。下面是一个使用自定义类型守卫的例子:

type Path = string;function isValidPath(path: string): path is Path {  return /^[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)*$/.test(path);}const str1: Path = "a.b";if (!isValidPath(str1)) {  throw new Error("Invalid path");}const str2: Path = "a.b.c";if (!isValidPath(str2)) {  throw new Error("Invalid path");}const str3: Path = "a..b";if (!isValidPath(str3)) {  throw new Error("Invalid path");}

在这个例子中,isValidPath 函数是一个类型守卫,它会检查一个字符串是否符合特定的路径模式。如果字符串符合模式,那么 isValidPath 函数会返回 true,并且 TypeScript 会自动将该字符串的类型收窄为 Path。如果字符串不符合模式,那么 isValidPath 函数会返回 false,并且 TypeScript 会保持字符串的原始类型 string

注意,虽然这个例子使用了正则表达式来检查路径模式,但你可以根据自己的需要修改 isValidPath 函数。例如,你可能想要允许路径中包含数字,或者你可能想要限制路径的最大长度。

 类似资料:
  • 问题内容: 是否有一个JavaScript的等效的Java的? 问题答案: 是否有与Java等效的JavaScript ? 没有 。 名称为。不论类别如何,的类别名称均为。ES2015环境中的内置构造函数具有正确的属性;例如是。 但是,这里有各种各样的骇客,它们都以一种或另一种方式下降: 这是一种可以满足您需要的技巧-请注意,它会修改Object的原型,而人们对此并不满意(通常是出于充分的理由)

  • 问题内容: 我有一个名字叫类的名字(没有扩展名)。我想将其分配给变量,如下所示: 我怎样才能做到这一点? 问题答案: 但是您应该是完全合格的-即

  • javabeans新手,如果这太简单了,请原谅我: 在编写javabean页面时得到此错误。代码基本上要求将7个值加在一起,然后将总数除以160。代码是: 我到底做错了什么?

  • 我申明了三个类型 使得我可以如下写 如何修改上面的类型申明,使得他允许中间有空格

  • 我无法将字符串(生日)转换为整数(年龄)。我希望有人输入他们的出生年份,并让程序做一个简单的减法计算出他们的年龄。我是编程新手,所以我一直在四处寻找,大多数地方都告诉我同样的事情。 然而,在做了这些之后,当我尝试做数学时。。。 我得到了标题中的错误。 很抱歉,如果这是在错误的地方,这只是我在这里的第二个帖子。我只是点击“提问”并按照指示进行操作

  • 我找不到如何用Kotlin语言将变量(或常量)的类型作为,像。如何完成这一点?