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

如何在typescript中迭代字符串文字类型

郭兴文
2023-03-14

如何在typescript中迭代字符串文字类型?

例如我定义这种类型

type Name = "Bill Gates" | "Steve Jobs" | "Linus Torvalds";

我想这样迭代

for (let name of Name) {
    console.log("Possible name: " + name);
}

或者这在打字稿中根本不可能?

共有3个答案

平庆
2023-03-14

由于typescript 2.4,可以使用字符串类型的枚举。这些枚举可以轻松迭代:

https://blogs.msdn.microsoft.com/typescript/2017/06/27/announcing-typescript-2-4/

方航
2023-03-14

因为TypeScript只是一个编译器,所以在运行时没有任何类型信息。这意味着不幸的是,您无法遍历类型。

根据您尝试执行的操作,可以使用枚举存储名称索引,然后在数组中检索这些索引。

融宏伟
2023-03-14

您可以定义一个数组文字,而不是像OP请求的那样迭代字符串文字类型的(并集),如果将标记为const,则条目的类型将是字符串文字类型的并集。

由于typescript 3.4,您可以在文字表达式上定义常量断言,以标记:-该表达式中的文字类型不应加宽(例如,不能从“hello”变为字符串)-数组文字变为只读元组

例如:

const names = ["Bill Gates", "Steve Jobs", "Linus Torvalds"] as const;
type Names = typeof names[number];

它可以在运行时使用,也可以检查类型,例如:

const companies = {
    "Bill Gates" : "Microsoft",
    "Steve Jobs" : "Apple",
    "Linus Torvalds" : "Linux",
} as const;

for(const n of names) {
    console.log(n, companies[n]);
}
const bg : Names = 'Bill Gates';
const ms = companies[bg];

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-断言

https://mariusschulz.com/blog/const-assertions-in-literal-expressions-in-typescript

https://microsoft.github.io/TypeScript-New-Handbook/chapters/types-from-extraction/#indexed-访问类型

 类似资料:
  • 问题内容: 如何使用索引逐个字符地迭代UTF-8字符串? 使用方括号运算符访问UTF-8字符串时,utf编码的字符包含2个或更多元素。 例如: 但我想拥有: 有可能,但是这非常慢,即。 是否有另一种无需使用字符就可以逐字符插入字符串的方法? 问题答案: 使用preg_split。使用“ u”修饰符, 它支持UTF-8 Unicode。

  • 问题内容: 有没有一种方法可以将Typescript中的字符串解析为JSON。 示例:在JS中,我们可以使用。Typescript中有类似的功能吗? 我有一个JSON对象字符串,如下所示: 问题答案: Typescript是javascript(的超集),因此您可以像在javascript中那样使用它: 只有在打字稿中,您才能对结果对象进行打字: (操场上的代码)

  • 在typescript中有没有一种方法可以将字符串解析为JSON。 示例:在JS中,我们可以使用。在Typescript中有类似的功能吗? 我有一个JSON对象字符串,如下所示:

  • 给定数字的字符串表示形式,如何将其转换为TypeScript中的类型?

  • 我试图重置文本框值。试图设置类型字符串|数字的变量,但我得到一个错误。那么如何在打字稿中将两种类型设置为单个变量。请帮助找到解决方案。 错误: 元素[i]. value=值[i]; 类型“string | number”不可分配给类型“string”。类型“number”不可分配给类型“string” 演示:https://stackblitz.com/edit/angular-dzxsg4?fi