type Scale = < Domain, Range = number, Unknown = undefined >( x: Domain ) => Range | Unknown type ScaleReturnType = T extends Scale ? X | Y : number | undefined const get: ( scale: S, accessor: (d: T) => ScaleReturnType ) => { (value: T): ScaleReturnType scale: S accessor: (d: T) => ScaleReturnType } export default get