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
Name | Type |
---|---|
T | extends TranspiledEnum |
Parameters
Name | Type |
---|---|
transpiledEnum | T |
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
Name | Type |
---|---|
transpiledEnum | TranspiledEnum |
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
Name | Type |
---|---|
transpiledEnum | TranspiledEnum |
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
Name | Type |
---|---|
transpiledEnum | TranspiledEnum |
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
Name | Type |
---|---|
T | extends TranspiledEnum |
Parameters
Name | Type |
---|---|
transpiledEnum | T |
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
Name | Type |
---|---|
T | extends TranspiledEnum |
Parameters
Name | Type |
---|---|
transpiledEnum | T |
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
Name | Type |
---|---|
T | extends TranspiledEnum |
Parameters
Name | Type |
---|---|
transpiledEnum | T |
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
Name | Type |
---|---|
T | extends TranspiledEnum |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
transpiledEnum | T | undefined | The enum to get the value from. |
seedOrRNG | undefined | RNG | Seed | undefined | The 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. |
exceptions | readonly 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
Name | Type |
---|---|
T | extends Record <Enum , unknown > |
Enum | extends 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
Name | Type |
---|---|
T | extends TranspiledEnum |
Parameters
Name | Type |
---|---|
value | string | number | BitFlag | BitFlag128 |
transpiledEnum | T |
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
Name | Type |
---|---|
transpiledEnumName | string |
transpiledEnum | TranspiledEnum |
Returns
void
Defined in
packages/isaacscript-common/src/functions/enums.ts:262
validateEnumContiguous
▸ validateEnumContiguous(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.
Parameters
Name | Type |
---|---|
transpiledEnumName | string |
transpiledEnum | TranspiledEnum |
Returns
void