Typescript 我可以定义一个类型脚本变量作为枚举和函数吗?

Typescript 我可以定义一个类型脚本变量作为枚举和函数吗?,typescript,Typescript,以下是迄今为止的代码: function fr(this: any, value: number) { return Object.keys(this).find(k => this[k] === value); } type getEnumValue = (value: number) => string; type myEnum = typeof enumVal; enum enumVal { a = 1, b = 2 } let EnumEval = fr.b

以下是迄今为止的代码:

function fr(this: any, value: number) {
  return Object.keys(this).find(k => this[k] === value);
}

type getEnumValue = (value: number) => string;
type myEnum = typeof enumVal;

enum enumVal {
  a = 1,
  b = 2
}

let EnumEval = fr.bind(enumVal) as getEnumValue | myEnum;
Object.assign(EnumEval, enumVal);

// Why are the casts required?
console.log((EnumEval as myEnum).a);
console.log((EnumEval as getEnumValue)(1));

console.log(EnumEval as myEnum.a);
console.log(EnumEval(1));
TS在最后两行出现错误,需要我投。为什么?

给你:

let EnumEval = fr.bind(enumVal) as (((value:number) => string) & (typeof enumVal));
或:

是枚举和函数的变量-因此它应该是&,而不是|


你能告诉我你以这种方式使用enum的动机是什么吗?Enum应该用作Enum,所以只是一个简单的变量。@MaciejSikora一个非TS用户说TS无法处理这种类型,而我在向用户显示它可以处理时遇到了困难。因为这段代码的主要目的是能够从同一个对象中获取文本值或int值,所以我让他们知道TS中的枚举已经以一种更简单的方式为您解决了这个问题。
let EnumEval = fr.bind(enumVal) as (typeof fr & typeof enumVal);