Skip to main content

Enums

Type Aliases

TranspiledEnum

Ƭ TranspiledEnum: Record<string, string | number | BitFlag | BitFlag128>

In Lua, tables can have number keys, but since this is a type only being validated in TypeScript, we can match the JavaScript definition, meaning that we can omit the number from the keys.

Defined in

packages/isaacscript-common/src/functions/enums.ts:11

Functions

getEnumEntries

getEnumEntries<T>(transpiledEnum): ReadonlyArray<[key: string, value: T[keyof T]]>

TypeScriptToLua will transpile TypeScript number enums to Lua tables that have a double mapping. Thus, when you iterate over them, you will get both the names of the enums and the values of the enums, in a random order. Use this helper function to get the entries of the enum with the reverse mappings filtered out.

This function will return the enum values in a sorted order, which may not necessarily be the same order as which they were declared in. (It is impossible to get the declaration order at run-time.)

This function will work properly for both number enums and string enums. (Reverse mappings are not created for string enums.)

Also see the getEnumKeys and getEnumValues helper functions.

For a more in depth explanation, see: https://isaacscript.github.io/main/gotchas#iterating-over-enums

Type parameters

NameType
Textends TranspiledEnum

Parameters

NameType
transpiledEnumT

Returns

ReadonlyArray<[key: string, value: T[keyof T]]>

Defined in

packages/isaacscript-common/src/functions/enums.ts:34


getEnumKeys

getEnumKeys(transpiledEnum): readonly string[]

TypeScriptToLua will transpile TypeScript number enums to Lua tables that have a double mapping. Thus, when you iterate over them, you will get both the names of the enums and the values of the enums, in a random order. If all you need are the keys of an enum, use this helper function.

This function will return the enum keys in a sorted order, which may not necessarily be the same order as which they were declared in. (It is impossible to get the declaration order at run-time.)

This function will work properly for both number enums and string enums. (Reverse mappings are not created for string enums.)

Also see the getEnumEntries and getEnumValues helper functions.

For a more in depth explanation, see: https://isaacscript.github.io/main/gotchas#iterating-over-enums

Parameters

NameType
transpiledEnumTranspiledEnum

Returns

readonly string[]

Defined in

packages/isaacscript-common/src/functions/enums.ts:72


getEnumLength

getEnumLength(transpiledEnum): int

Helper function to get the amount of entries inside of an enum.

Parameters

NameType
transpiledEnumTranspiledEnum

Returns

int

Defined in

packages/isaacscript-common/src/functions/enums.ts:78


getEnumNames

getEnumNames(transpiledEnum): readonly string[]

TypeScriptToLua will transpile TypeScript number enums to Lua tables that have a double mapping. Thus, when you iterate over them, you will get both the names of the enums and the values of the enums, in a random order. If all you need are the names of an enum from the reverse mapping, use this helper function.

This function will return the enum names in a sorted order, which may not necessarily be the same order as which they were declared in. (It is impossible to get the declaration order at run-time.)

This function will work properly for both number enums and string enums. (Reverse mappings are not created for string enums, so their names would be equivalent to what would be returned by the getEnumKeys function.)

For a more in depth explanation, see: https://isaacscript.github.io/main/gotchas#iterating-over-enums

Parameters

NameType
transpiledEnumTranspiledEnum

Returns

readonly string[]

Defined in

packages/isaacscript-common/src/functions/enums.ts:100


getEnumValues

getEnumValues<T>(transpiledEnum): ReadonlyArray<T[keyof T]>

TypeScriptToLua will transpile TypeScript number enums to Lua tables that have a double mapping. Thus, when you iterate over them, you will get both the names of the enums and the values of the enums, in a random order. If all you need are the values of an enum, use this helper function.

This function will return the enum values in a sorted order, which may not necessarily be the same order as which they were declared in. (It is impossible to get the declaration order at run-time.)

This function will work properly for both number enums and string enums. (Reverse mappings are not created for string enums.)

Also see the getEnumEntries and getEnumKeys helper functions.

For a more in depth explanation, see: https://isaacscript.github.io/main/gotchas#iterating-over-enums

Type parameters

NameType
Textends TranspiledEnum

Parameters

NameType
transpiledEnumT

Returns

ReadonlyArray<T[keyof T]>

Defined in

packages/isaacscript-common/src/functions/enums.ts:134


getHighestEnumValue

getHighestEnumValue<T>(transpiledEnum): T[keyof T]

Helper function to get the enum value with the highest value.

Note that this is not necessarily the enum value that is declared last in the code, since there is no way to infer that at run-time.

Throws an error if the provided enum is empty.

Type parameters

NameType
Textends TranspiledEnum

Parameters

NameType
transpiledEnumT

Returns

T[keyof T]

Defined in

packages/isaacscript-common/src/functions/enums.ts:149


getLowestEnumValue

getLowestEnumValue<T>(transpiledEnum): T[keyof T]

Helper function to get the enum value with the lowest value.

Note that this is not necessarily the enum value that is declared first in the code, since there is no way to infer that at run-time.

Throws an error if the provided enum is empty.

Type parameters

NameType
Textends TranspiledEnum

Parameters

NameType
transpiledEnumT

Returns

T[keyof T]

Defined in

packages/isaacscript-common/src/functions/enums.ts:171


getRandomEnumValue

getRandomEnumValue<T>(transpiledEnum, seedOrRNG, exceptions?): T[keyof T]

Helper function to get a random value from the provided enum.

If you want an unseeded value, you must explicitly pass undefined to the seedOrRNG parameter.

Type parameters

NameType
Textends TranspiledEnum

Parameters

NameTypeDefault valueDescription
transpiledEnumTundefinedThe enum to get the value from.
seedOrRNGundefined | RNG | SeedundefinedThe Seed or RNG object to use. If an RNG object is provided, the RNG.Next method will be called. If undefined is provided, it will default to a random seed.
exceptionsreadonly T[keyof T][][]Optional. An array of elements to skip over if selected.

Returns

T[keyof T]

Defined in

packages/isaacscript-common/src/functions/enums.ts:196


interfaceSatisfiesEnum

interfaceSatisfiesEnum<T, Enum>(): void

Helper function to validate that an interface contains all of the keys of an enum. You must specify both generic parameters in order for this to work properly (i.e. the interface and then the enum).

For example:

enum MyEnum {
Value1,
Value2,
Value3,
}

interface MyEnumToType {
[MyEnum.Value1]: boolean;
[MyEnum.Value2]: number;
[MyEnum.Value3]: string;
}

interfaceSatisfiesEnum<MyEnumToType, MyEnum>();

This function is only meant to be used with interfaces (i.e. types that will not exist at run-time). If you are generating an object that will contain all of the keys of an enum, use the satisfies operator with the Record type instead.

Type parameters

NameType
Textends Record<Enum, unknown>
Enumextends string | number

Returns

void

Defined in

packages/isaacscript-common/src/functions/enums.ts:232


isEnumValue

isEnumValue<T>(value, transpiledEnum): value is T[keyof T]

Helper function to validate that a particular value exists inside of an enum.

Type parameters

NameType
Textends TranspiledEnum

Parameters

NameType
valuestring | number | BitFlag | BitFlag128
transpiledEnumT

Returns

value is T[keyof T]

Defined in

packages/isaacscript-common/src/functions/enums.ts:239


validateCustomEnum

validateCustomEnum(transpiledEnumName, transpiledEnum): void

Helper function to check every value of a custom enum for -1. Will throw an run-time error if any -1 values are found. This is helpful because many methods of the Isaac class return -1 if they fail.

For example:

enum EntityTypeCustom {
FOO = Isaac.GetEntityTypeByName("Foo"),
}

validateCustomEnum("EntityTypeCustom", EntityTypeCustom);

Parameters

NameType
transpiledEnumNamestring
transpiledEnumTranspiledEnum

Returns

void

Defined in

packages/isaacscript-common/src/functions/enums.ts:262


validateEnumContiguous

validateEnumContiguous<T>(transpiledEnumName, transpiledEnum): void

Helper function to validate if every value in a number enum is contiguous, starting at 0.

This is useful to automate checking large enums for typos.

Type parameters

NameType
Textends TranspiledEnum

Parameters

NameType
transpiledEnumNamestring
transpiledEnumT

Returns

void

Defined in

packages/isaacscript-common/src/functions/enums.ts:280