TypeScript:Enum.Value与其他一些Enum.Value不可比较
我在一个单独的文件中放置了一个枚举,这样我就可以跨文件使用该枚举 枚举TypeScript:Enum.Value与其他一些Enum.Value不可比较,typescript,Typescript,我在一个单独的文件中放置了一个枚举,这样我就可以跨文件使用该枚举 枚举 export enum Category { NotDefined, BackData, Testing, Simulated } 在另一个文件中,我尝试使用我的枚举。我正在尝试编写一个简单的if/else或switch 如果我设置category==category的值,那么测试vscode是很愉快的。 如果我尝试将该值设置为其他值,如下面示例中的“backData”,则会
export enum Category {
NotDefined,
BackData,
Testing,
Simulated
}
在另一个文件中,我尝试使用我的枚举。我正在尝试编写一个简单的if/else或switch
如果我设置category==category的值,那么测试vscode是很愉快的。
如果我尝试将该值设置为其他值,如下面示例中的“backData”,则会出现错误:
Type 'Category.Testing' is not comparable to type 'Category.BackData'
示例代码:
import { Category } from '@app/model/Enums.ts';
public async SubmitForm(): Promise<Boolean> {
var category: Category;
category = Category.BackData;
switch (category) {
case (Category.Testing): {
...
}
default: {
...
}
}
if (category == Category.Testing) {
...
} else {
...
}
}
从'@app/model/Enums.ts'导入{Category};
公共异步提交表单():承诺{
var类别:类别;
category=category.BackData;
开关(类别){
案例(类别测试):{
...
}
默认值:{
...
}
}
if(类别==类别测试){
...
}否则{
...
}
}
将枚举设置为要测试的另一个值时出错
作为一种解决方法(仅用于测试目的),您可以编写:
category = Category.BackData as Category;
Typescript枚举是标称的或不透明的,这意味着它们是全局唯一的,并且不可分配给其他或其他类型,即使它们是相同的
export type IsEqual<A, B> = [A] extends [B] ? [B] extends [A] ? true : false : false
enum Foo {
Foo
}
enum Bar {
Bar
}
enum FooStr {
Foo = "hello"
}
enum BarStr {
Bar = "hello"
}
type WhatType = IsEqual<Foo, Bar> // false.
type WhatType1 = IsEqual<Foo.Foo, Bar.Bar> // false even though both are 0
type WhatType2 = IsEqual<FooStr.Foo, BarStr.Bar> // false even though both are "hello"
导出类型IsEqual=[A]扩展[B]?[B] 扩展[A]?真:假:假
enum Foo{
福
}
枚举条{
酒吧
}
枚举FooStr{
Foo=“你好”
}
枚举条{
Bar=“你好”
}
键入WhatType=IsEqual//false。
键入WhatType1=IsEqual//false,即使两者都为0
键入WhatType2=IsEqual//false,即使两者都是“hello”
可能重复的是同一个问题,但我收到的答案与该问题中的答案不同。因此,我将选择不将其标记为副本。