UNPKG

@reduxjs/toolkit

Version:

The official, opinionated, batteries-included toolset for efficient Redux development

37 lines (32 loc) 1.09 kB
// taken from https://github.com/joonhocho/tsdef // return True if T is `any`, otherwise return False export type IsAny<T, True, False = never> = ( | True | False) extends (T extends never ? True : False) ? True : False // taken from https://github.com/joonhocho/tsdef // return True if T is `unknown`, otherwise return False export type IsUnknown<T, True, False = never> = unknown extends T ? IsAny<T, False, True> : False export type IsEmptyObj<T, True, False = never> = T extends any ? keyof T extends never ? IsUnknown<T, False, True> : False : never /** * returns True if TS version is above 3.5, False if below. * uses feature detection to detect TS version >= 3.5 * * versions below 3.5 will return `{}` for unresolvable interference * * versions above will return `unknown` * */ export type AtLeastTS35<True, False> = [True, False][IsUnknown< ReturnType<<T>() => T>, 0, 1 >] export type IsUnknownOrNonInferrable<T, True, False> = AtLeastTS35< IsUnknown<T, True, False>, IsEmptyObj<T, True, False> >