【问题标题】:Converting from string to custom type从字符串转换为自定义类型
【发布时间】:2019-11-22 08:00:14
【问题描述】:

我对 JS 很陌生。我创建了一个名为“Stage”的自定义类型。我想将字符串转换为这些类型。字符串将永远等于这些值中的一个(首字母大写,写法相同)。我一直在尝试使用 .find() 完成某些事情,但这似乎不是要走的路线,因为它需要一个数组。任何帮助表示赞赏!

type Stage = 'First' | 'Second';

【问题讨论】:

  • JavaScript 中没有自定义类型。也许更大的代码块会更清楚你需要什么。
  • 啊,这是 TypeScript 相关的问题。
  • 你的意思是布尔值吗? stage?'First':'Second'
  • 所以我正在尝试创建一个函数来接收一个字符串并将其转换为“Stage”: const stringToStage(str: string, stage: Stage) =>
  • 而不是布尔值

标签: typescript types casting typescript-typings


【解决方案1】:

在 TypeScript 中,type Stage... 语句有点令人困惑,因为它创建的是 type alias 而不是实际的类型。不需要在运行时将string 转换为Stage,因为在运行时Stagestring

TypeScript enum 可能更接近您正在寻找的内容。它创建了一个对象,可用于转换为字符串/从字符串转换。试试这样的测试/演示例程:

import test from 'ava';

enum Stage {
    First = 1,
    Second = 2
}

test('Testing Stage conversion between string and number ', t=> {
    const stringName = "First";
    t.is(Stage.First, 1);
    t.is(Stage[stringName], 1);
    t.is(Stage.Second, 2);
    t.is(Stage[1], "First");
    t.is(Stage[2], "Second");
    t.is(Stage["foo"], undefined);
    t.pass();
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-17
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2018-02-04
    • 2011-12-21
    相关资源
    最近更新 更多