UNPKG

lean4-code-actions

Version:

Refactorings and snippets for Lean 4

29 lines (21 loc) 828 B
export function isDefined<T>(t: T | undefined): t is T { return t !== undefined } export function toEnum<K extends string>(...args: K[]): { [P in K]: P } { const result = {} as { [P in K]: P } args.forEach(k => result[k] = k) return result } export type Ordinal = number | string | Date type EnumObject = { [key: string]: number | string }; type EnumObjectEnum<E extends EnumObject> = E extends { [key: string]: infer ET | string } ? ET : never; export function getEnumValues<E extends EnumObject>(enumObject: E): EnumObjectEnum<E>[] { return Object.keys(enumObject) .filter(key => Number.isNaN(Number(key))) .map(key => enumObject[key] as EnumObjectEnum<E>) } export const AlwaysTrueTypeGuard = <Err>(e: Err): e is Err => true /** * @see ErrorBox */ export type Primitive = string | number | boolean