Skip to content

Instantly share code, notes, and snippets.

type NativeType = null | number | string | boolean | symbol | Function;
type InferDefault<P, T> = ((props: P) => T & {}) | (T extends NativeType ? T : never);
function getDefault<P, K extends keyof P>(defaults: DefaultProps<P>, k: K, injected?: DefaultProps<P>): InferDefault<P, P[K]> | undefined {
return (p) => {
const t: InferDefault<P, P[K]> | undefined = (injected && k in injected) ? injected[k] : defaults[k]
if (typeof t === 'function') return t(p)
return t
}
}