从字符串转换为自定义类型

时间:2019-07-12 14:18:17

标签: typescript types casting typescript-typings

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

type Stage = 'First' | 'Second';

1 个答案:

答案 0 :(得分:0)

在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();
})