function one (this : number) {} function two (this : number, a) {} function three (this : number, ...a) {} function four (this : number, a, b, ...c) {} function five (this : T) {} type six = (this : number) => void type seven = (this : number, a : number) => void type eight = (this : number, ...a : any) => void type nine = (this : T) => void type ten = { m1(this : string) : void, m2(this : string, a : number) : void, m3(this : string, ...a : any) : void, m4(this : T) : void } declare function eleven (this : number) : void declare function twelve (this : string, a : number) : void declare function thirteen (this : string, ...a : any) : void declare function fourteen(this : T) : void declare class Fifteen { m1(this : string) : void, m2(this : string, a : number) : void, m3(this : string, ...a : any) : void, m4(this : T) : void } class Sixteen { m1 (this : number) {} m2 (this : number, a) {} m3 (this : number, ...a) {} m4 (this : number, a, b, ...c) {} m5 (this : T) {} } let seventeen = { m1 (this : number) {}, m2 (this : number, a) {}, m3 (this : number, ...a) {}, m4 (this : number, a, b, ...c) {}, m5 (this : T) {} }