utility.d.ts 381 B

1234567891011121314
  1. type ValueOf<Obj> = Obj[keyof Obj];
  2. type OneOnly<Obj, K extends keyof Obj> = {
  3. [key in Exclude<keyof Obj, K>]: undefined;
  4. } & {
  5. [key in K]: Obj[K];
  6. };
  7. type OneOfByKey<Obj> = {
  8. [key in keyof Obj]: OneOnly<Obj, key>;
  9. };
  10. export type OneOf<T> = ValueOf<OneOfByKey<T>>;
  11. export type WithRequired<T, K extends keyof T> = T & {
  12. [P in K]-?: NonNullable<T[P]>;
  13. };
  14. export {};