如何将带有另一个字符串枚举的键的枚举传递给接受字符串的函数?

黑丹

我试图将字符串枚举传递给需要字符串的函数。问题是必须从(全局)常量枚举中分配此字符串枚举,该枚举包含我们存储库中的所有常量。

enum Constants {
    hello = "Hello"
}

enum Potato {
    h = Constants.hello
}

function takesAString(s: string) {
    console.log(s + ", world!");
}
takesAString(Potato.h);
// ERROR: Argument of type 'Potato' is not assignable to parameter of type 'string'

尽管人们可能希望它Potato.h是字符串类型的(因为它是从字符串枚举常量中分配了一个字符串),但实际上它会出错,并且错误是“土豆”无法分配给字符串类型的参数。在我看来,这意味着Typescript编译器无法推断Potato.h是字符串。

起作用的东西:

enum Potato {
    h = "Hello"
}

function takesAString(s: string) {
    console.log(s + ", world!");
}
takesAString(Potato.h);
// OK
enum Constants {
    hello = "Hello"
}

enum Potato {
    h = Constants.hello
}

function takesAString(s: string) {
    console.log(s + ", world!");
}
takesAString(Potato.h.toString());
// OK: toString() causes "Hello, world!" to be printed

我正在使用Typescript版本3.8.3

游乐场链接

塔德·麦当劳·詹森

这看起来像是打字稿中的错误,我在这里提出了一个错误报告看起来打字稿正在将Potato枚举键入为数字,这显然是错误的。

字符串枚举不允许具有计算成员,例如,如果您这样做:

declare function returnsString(): string;
enum Test {
    a = returnsString();
} 

您收到此错误:

只有数字枚举可以具有计算成员,但是此表达式的类型为“字符串”。如果不需要穷举检查,请考虑改用对象文字。

因此,您可能想使用对象文字,它不需要重写整个代码库,只需将枚举更改为以下形式即可:

type Constants = typeof Constants[keyof typeof Constants]
const Constants = {
    hello: "Hello"
} as const

type Potato = typeof Potato[keyof typeof Potato]
const Potato = {
    h: Constants.hello
} as const;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

练习:从另一个字符串中删除所有出现的字符串

来自分类Dev

人偶中的函数,用于检查一个字符串是否包含另一个字符串

来自分类Dev

如何从另一个字符串替换一个字符串?

来自分类Dev

如何将字符串插入具有相同多次出现的另一个字符串

来自分类Dev

将带有字符串的数组传递给另一个类,并将int传递给另一个类

来自分类Dev

用另一个字符串环绕字符串

来自分类Dev

将字符串参数传递给另一个字符串

来自分类Dev

如何检查一个字符串不包含另一个字符串的文本?

来自分类Dev

Perl:我们如何检查哪个字符串是另一个字符串的子字符串?

来自分类Dev

检查一个字符串是否包含Ruby中另一个字符串的所有字符

来自分类Dev

如果子集字符串是另一个字符串的子字符串,如何将其删除

来自分类Dev

检查子字符串是否在Haskell的另一个字符串内的函数

来自分类Dev

使用If函数,如何将数据框中的文本字符串更改为另一个字符串?

来自分类Dev

如何在另一个字符串的末尾找到带有多余单词的不同字符串?

来自分类Dev

检查一个字符串是否具有另一个字符串的所有字符

来自分类Dev

删除另一个字符串中带有{{xxx}}的字符串

来自分类Dev

如何将一个字符串数组存储到另一个字符串数组中?

来自分类Dev

如何将一个字符串值除以另一个包含数字值的另一个字符串值

来自分类Dev

如何在现有字符串表字段中添加另一个字符串和另一个字符串

来自分类Dev

swift:如何将一个字符串从textField分配给另一个字符串?

来自分类Dev

如何将一个字符串值传递给COUNTIF?

来自分类Dev

如果字符串在另一个字符串内

来自分类Dev

如何在Objective-C的另一个字符串中搜索带有空格的字符串?

来自分类Dev

如何将一个字符串值与另一个字符串值进行比较?

来自分类Dev

将 Int 传递给枚举并返回一个字符串

来自分类Dev

如何将对向量中的对的第一个元素(字符串)与另一个字符串进行比较?

来自分类Dev

如何从另一个字符串中删除所有出现的带有`/`的字符串

来自分类Dev

grep:如果另一个字符串没有出现,则计算一个字符串出现的次数

来自分类Dev

如何将一个字符串插入另一个字符串?

Related 相关文章

  1. 1

    练习:从另一个字符串中删除所有出现的字符串

  2. 2

    人偶中的函数,用于检查一个字符串是否包含另一个字符串

  3. 3

    如何从另一个字符串替换一个字符串?

  4. 4

    如何将字符串插入具有相同多次出现的另一个字符串

  5. 5

    将带有字符串的数组传递给另一个类,并将int传递给另一个类

  6. 6

    用另一个字符串环绕字符串

  7. 7

    将字符串参数传递给另一个字符串

  8. 8

    如何检查一个字符串不包含另一个字符串的文本?

  9. 9

    Perl:我们如何检查哪个字符串是另一个字符串的子字符串?

  10. 10

    检查一个字符串是否包含Ruby中另一个字符串的所有字符

  11. 11

    如果子集字符串是另一个字符串的子字符串,如何将其删除

  12. 12

    检查子字符串是否在Haskell的另一个字符串内的函数

  13. 13

    使用If函数,如何将数据框中的文本字符串更改为另一个字符串?

  14. 14

    如何在另一个字符串的末尾找到带有多余单词的不同字符串?

  15. 15

    检查一个字符串是否具有另一个字符串的所有字符

  16. 16

    删除另一个字符串中带有{{xxx}}的字符串

  17. 17

    如何将一个字符串数组存储到另一个字符串数组中?

  18. 18

    如何将一个字符串值除以另一个包含数字值的另一个字符串值

  19. 19

    如何在现有字符串表字段中添加另一个字符串和另一个字符串

  20. 20

    swift:如何将一个字符串从textField分配给另一个字符串?

  21. 21

    如何将一个字符串值传递给COUNTIF?

  22. 22

    如果字符串在另一个字符串内

  23. 23

    如何在Objective-C的另一个字符串中搜索带有空格的字符串?

  24. 24

    如何将一个字符串值与另一个字符串值进行比较?

  25. 25

    将 Int 传递给枚举并返回一个字符串

  26. 26

    如何将对向量中的对的第一个元素(字符串)与另一个字符串进行比较?

  27. 27

    如何从另一个字符串中删除所有出现的带有`/`的字符串

  28. 28

    grep:如果另一个字符串没有出现,则计算一个字符串出现的次数

  29. 29

    如何将一个字符串插入另一个字符串?

热门标签

归档