var n1: number[]; /* interface Array { concat(...items: T[][]): T[]; // Note: This overload needs to be picked for arrays of arrays, even though both are applicable concat(...items: T[]): T[]; } */ var fa: number[]; fa = fa.concat([0]); fa = fa.concat(0); /* declare class C { public m(p1: C>): C; //public p: T; } var c: C; var cc: C>; c = c.m(cc); */