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

黑丹

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

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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何测试一个字符串是否是另一个字符串的子序列?

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

    如何测试一个字符串是否是另一个字符串的子序列?

热门标签

归档