@northscaler/better-enum
Version:
Better enumeration support for TypeScript than its `enum` keyword. This class is modeled after [Java's enumeration pattern](https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html), where enums are instances of classes. This library provides a base
17 lines (16 loc) • 1.64 kB
text/xml
<templateSet group="@northscaler/better-enum">
<template name="nsenumclass-ts" value="import { _of, _values, Enumeration } from '@northscaler/better-enum' let ordinal = 0 export default class $ClassName$ extends Enumeration<$ClassName$> { static readonly $EnumName$ = new $ClassName$('$EnumName$', ordinal++$END$) static of(it: $ClassName$ | string | number): $ClassName$ { return _of(it, $ClassName$) } static values(): $ClassName$[] { return _values<$ClassName$>($ClassName$) } private constructor(name: string, ordinal: number) { super(name, ordinal, $ClassName$) } } " description="Northscaler enumeration class template" toReformat="true" toShortenFQNames="true">
<variable name="ClassName" expression="fileNameWithoutExtension()" defaultValue="" alwaysStopAt="true" />
<variable name="EnumName" expression="" defaultValue="THING" alwaysStopAt="true" />
<context>
<option name="TS_TOP_LEVEL_STATEMENT" value="true" />
</context>
</template>
<template name="nsenumval-ts" value="static readonly $EnumName$ = new $ClassName$('$EnumName$', ordinal++$END$)" description="Northscaler enumeration class value" toReformat="true" toShortenFQNames="true">
<variable name="EnumName" expression="" defaultValue="THING" alwaysStopAt="true" />
<variable name="ClassName" expression="jsClassName()" defaultValue="" alwaysStopAt="true" />
<context>
<option name="TS_CLASS" value="true" />
</context>
</template>
</templateSet>