import { useMemo } from 'react'; export type FeatureFlagCallback = () => T; export type FeatureFlagSignature = { (resolver: () => boolean, ifTrue: FeatureFlagCallback, ifFalse?: FeatureFlagCallback): T | undefined; (resolver: () => boolean, ifTrue: FeatureFlagCallback | undefined, ifFalse: FeatureFlagCallback): T | undefined; }; export const useFeatureFlag: FeatureFlagSignature = ( resolver: () => boolean, ifTrue: FeatureFlagCallback | undefined, ifFalse: FeatureFlagCallback | undefined) => { return useMemo(() => { if (resolver()) { return ifTrue && ifTrue(); } return ifFalse && ifFalse(); }, [ resolver, ifTrue, ifFalse ]); };