是否可以在 TypeScript 中向 Enum 类型添加函数?
例如:
enum Mode {
landscape,
portrait,
// the dream...
toString() { console.log(this); }
}
Or:
class ModeExtension {
public toString = () => console.log(this);
}
enum Mode extends ModeExtension {
landscape,
portrait,
}
当然toString()
函数将包含类似的东西switch
但用例将遵循以下原则:
class Device {
constructor(public mode:Mode) {
console.log(this.mode.toString());
}
}
我明白为什么要延长enum
可能是一件奇怪的事情,只是想知道这是否可能。
您可以拥有一个独立于 Enum 的类并使用它来获取所需的内容,也可以将命名空间合并到 Enum 中并在看起来相同的位置中获取所有内容。
模式实用类
因此,这并不完全是您想要的,但这允许您使用静态方法封装“模式到字符串”行为。
class ModeUtil {
public static toString(mode: Mode) {
return Mode[mode];
}
}
你可以这样使用它:
const mode = Mode.portrait;
const x = ModeUtil.toString(mode);
console.log(x);
模式枚举/命名空间合并
您可以将命名空间与 Enum 合并,以便使用其他方法创建看起来像 Enum 的内容:
enum Mode {
X,
Y
}
namespace Mode {
export function toString(mode: Mode): string {
return Mode[mode];
}
export function parse(mode: string): Mode {
return Mode[mode];
}
}
const mode = Mode.X;
const str = Mode.toString(mode);
alert(str);
const m = Mode.parse(str);
alert(m);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)