Skip to content

Commit 10a2917

Browse files
committed
Add keysTyped and entriesTyped helpers
1 parent 0525f9e commit 10a2917

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/util.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,3 +1287,17 @@ export async function asyncSome<T>(
12871287
export function isDefined<T>(value: T | null | undefined): value is T {
12881288
return value !== undefined && value !== null;
12891289
}
1290+
1291+
/** Like `Object.keys`, but infers the correct key type. */
1292+
export function keysTyped<T extends Record<string, any>>(
1293+
object: T,
1294+
): Array<keyof T> {
1295+
return Object.keys(object) as Array<keyof T>;
1296+
}
1297+
1298+
/** Like `Object.entries`, but infers the correct key type. */
1299+
export function entriesTyped<T extends Record<string, any>>(
1300+
object: T,
1301+
): Array<[keyof T, NonNullable<T[keyof T]>]> {
1302+
return Object.entries(object) as Array<[keyof T, NonNullable<T[keyof T]>]>;
1303+
}

0 commit comments

Comments
 (0)