export type Nullable = T | null; export type Arrayable = T | T[]; export type Awaitable = Promise | T; export type Functionable = () => T | T; export interface AnyObject { [key: string]: any; } export interface Fn { (...arg: T[]): R; } export interface PromiseFn { (...arg: T[]): Promise; } export type TreeItem = T & { children?: TreeItem[]; }; export type TreeList = TreeItem[];