Add keysTyped and entriesTyped helpers

This commit is contained in:
Michael B. Gale
2025-09-29 12:01:13 +01:00
parent 13ae3d4328
commit 0417531633
+14
View File
@@ -1287,3 +1287,17 @@ export async function asyncSome<T>(
export function isDefined<T>(value: T | null | undefined): value is T {
return value !== undefined && value !== null;
}
/** Like `Object.keys`, but infers the correct key type. */
export function keysTyped<T extends Record<string, any>>(
object: T,
): Array<keyof T> {
return Object.keys(object) as Array<keyof T>;
}
/** Like `Object.entries`, but infers the correct key type. */
export function entriesTyped<T extends Record<string, any>>(
object: T,
): Array<[keyof T, NonNullable<T[keyof T]>]> {
return Object.entries(object) as Array<[keyof T, NonNullable<T[keyof T]>]>;
}