Sha256: 14be139e0f6d380a3d24aaf9b67972add107bea35cf7f2b1b1febac6553c3ede
Contents?: true
Size: 1.5 KB
Versions: 28
Compression:
Stored size: 1.5 KB
Contents
import type {IsUnknown} from './is-unknown'; /** Create a function type with a return type of your choice and the same parameters as the given function type. Use-case: You want to define a wrapped function that returns something different while receiving the same parameters. For example, you might want to wrap a function that can throw an error into one that will return `undefined` instead. @example ``` import type {SetReturnType} from 'type-fest'; type MyFunctionThatCanThrow = (foo: SomeType, bar: unknown) => SomeOtherType; type MyWrappedFunction = SetReturnType<MyFunctionThatCanThrow, SomeOtherType | undefined>; //=> type MyWrappedFunction = (foo: SomeType, bar: unknown) => SomeOtherType | undefined; ``` @category Function */ export type SetReturnType<Function_ extends (...arguments_: any[]) => any, TypeToReturn> = // Just using `Parameters<Fn>` isn't ideal because it doesn't handle the `this` fake parameter. Function_ extends (this: infer ThisArgument, ...arguments_: infer Arguments) => any ? ( // If a function did not specify the `this` fake parameter, it will be inferred to `unknown`. // We want to detect this situation just to display a friendlier type upon hovering on an IntelliSense-powered IDE. IsUnknown<ThisArgument> extends true ? (...arguments_: Arguments) => TypeToReturn : (this: ThisArgument, ...arguments_: Arguments) => TypeToReturn ) : ( // This part should be unreachable, but we make it meaningful just in caseā¦ (...arguments_: Parameters<Function_>) => TypeToReturn );
Version data entries
28 entries across 28 versions & 2 rubygems