首页 > 解决方案 > 由数组定义的打字稿类型

问题描述

我正在使用 keyof、typeof、... 是否可以为枚举和数组提供一个“数据源”?

例如:
- 我想要一个枚举类型
- 和一个数组

但我想定义一个事实来源。目前我定义了 'limited'、'low'、'medium'、'high' 3 次,我有很多这样的“数据类”

const myArray: string[] = [
    'limited',
    'low',
    'medium',
    'high'
];
type MyStringEnumType =
    'limited'
    | 'low'
    | 'medium'
    | 'high';

enum MyEnum
{
    Limited = 'limited',
    Low = 'low',
    Medium = 'medium',
    High = 'high'
}

type Both = MyStringEnumType | MyEnum;

let testVar1: Both = MyEnum.Limited; // works
let testVar2: Both = 'limited'; // works
console.log(myArray[0], myArray.length); // works

谢谢!

问候疯狂x13th

标签: arraystypescripttypes

解决方案


好的,感谢 smnbbrv我找到了一个“好的”版本(没有“MyStringEnumType”)

  • 现在我有一个枚举
  • 和一个数组
export class ComplexityOptions
{
    public static get Values()
    {
        return Object.keys(ComplexityOptions.Option).map((key: any) => (ComplexityOptions.Option[key]));
    }
}

export module ComplexityOptions
{
    export enum Option
    {
        Limited = 'limited',
        Low = 'low',
        Medium = 'medium',
        High = 'high'
    }
}

推荐阅读