export type Func = (...args: any[]) => T export type Func0 = () => T export type Func1 = (arg1: any) => T export type Func2 = (arg1: any, arg2: any) => T export type Func3 = (arg1: any, arg2: any, arg3: any) => T export type Func4 = (arg1: any, arg2: any, arg3: any, arg4: any) => T export type Diff = ({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T] export type Omit = Pick> export type View = { [_ in K]: V } export type Overwrite = { [P in Exclude]: T1[P] } & T2