declare namespace TypeUtil { type Noop = (...args: any) => any; type UnionInclude = K extends keyof T ? true : false; type GetFunArgs = F extends (...args: infer P) => any ? P : never; type Writable = { [K in keyof T]: T[K] }; type FirstOfArray = T extends [infer First, ...infer _Rest] ? First : never; type LastOfArray = T extends [...infer _Rest, infer Last] ? Last : never; }