interface Array { flatMap( fn: (this: R, x: T, index: number, array: this) => U[], thisArg?: R ): U[]; }