UNPKG

type-plus

Version:
21 lines (19 loc) 628 B
import type { UnionKeys } from '../union_keys.js' export function getField<T, TX extends Exclude<T, undefined | null>, K extends UnionKeys<TX>>( subject: T, key: K ): TX[K] export function getField< T, TX extends Exclude<T, undefined | null>, K extends UnionKeys<TX>, DV extends Exclude<TX[K], undefined> >(subject: T, key: K, defaultValue: DV): DV export function getField< T, TX extends Exclude<T, undefined | null>, K extends UnionKeys<TX>, DV extends Exclude<TX[K], undefined> >(subject: T, key: K, defaultValue?: DV) { return (subject && (subject as unknown as { [k in K]: TX[K] | DV })[key]) || defaultValue }