export type NonNullableField = { [P in K]-?: T[P]; } & T; export function isFieldDefined(key: K) { return function (value: T): value is NonNullableField { return isDefined(value[key]); }; } export function isDefined(value: T | null | undefined): value is T { return value != null; }