Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 枚举可以用于键入数组吗_Typescript - Fatal编程技术网

Typescript 枚举可以用于键入数组吗

Typescript 枚举可以用于键入数组吗,typescript,Typescript,我想知道是否有一种方法可以使用枚举来描述数组可以包含的有效类型。我还没有找到实现这一目标的方法,有可能吗 以下是我尝试过的示例: interface User { name: string; } interface Admin { level: number; } enum Person { User, Admin, } const persons: Person[] = [ { name: 'hello' }, { level: 1 },

我想知道是否有一种方法可以使用枚举来描述数组可以包含的有效类型。我还没有找到实现这一目标的方法,有可能吗

以下是我尝试过的示例:

interface User {
    name: string;
}

interface Admin {
    level: number;
}

enum Person {
    User,
    Admin,
}

const persons: Person[] = [
    { name: 'hello' },
    { level: 1 },
];


一个工会也可能有类似的情况,只是为了澄清我试图实现的目标:

interface User {
    name: string;
}

interface Admin {
    level: number;
}

type Person = User | Admin;

const persons: Person[] = [
    { name: 'hello' },
    { level: 1 },
];

枚举可用于定义一组命名常量,Typescript可使用这些常量作为类型,将参数限制为仅该枚举的值

如果您想定义一组可能的类型,比如在第一个代码段中,您应该使用联合,就像您在第二个代码段中所做的那样


尝试将Person定义为基本界面,并从中派生用户和管理员。Enums不会让你声明你提到的东西。谢谢你的评论,@Eldar,虽然如果我这样做,它不会是一个Enums,但我不明白你想要实现某些东西的根本原因是什么,你已经可以用union type实现了,但是用一个在Typescript中不是为此而设计的enum?你能详细说明一下吗?当然可以,瓦伦丁。我仍在详细阐述我的TS知识,我的理解是TS可以进行详尽的枚举检查,但不能对联合进行检查。因此,它在任何接受
Person
并需要切换类型的fn中都很有用。我认为您必须首先了解接口只是编译时构造这一事实。不能将运行时行为基于接口类型。如果是类,你有更多的选择,但你仍然不能使用枚举方法。谢谢,卢克。好像我一直在找独角兽:)