63 lines
No EOL
1.9 KiB
Text
63 lines
No EOL
1.9 KiB
Text
==== tests/cases/compiler/interfaceAssignmentCompat.ts (4 errors) ====
|
|
module M {
|
|
export enum Color {
|
|
Green,
|
|
Blue,
|
|
Brown,
|
|
}
|
|
|
|
export interface IEye {
|
|
color:number;
|
|
}
|
|
|
|
export interface IFrenchEye {
|
|
coleur:number;
|
|
}
|
|
|
|
export function CompareEyes(a:IEye,b:IEye):number {
|
|
return a.color-b.color;
|
|
}
|
|
|
|
export function CompareYeux(a:IFrenchEye,b:IFrenchEye):number {
|
|
return a.coleur-b.coleur;
|
|
}
|
|
|
|
export function test() {
|
|
var x:IEye[]= [];
|
|
var result="";
|
|
|
|
x[0]={ color:Color.Brown };
|
|
x[1]={ color:Color.Blue };
|
|
x[2]={ color:Color.Green };
|
|
|
|
x=x.sort(CompareYeux); // parameter mismatch
|
|
~~~~~~~~~~~
|
|
!!! Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'.
|
|
// type of z inferred from specialized array type
|
|
var z=x.sort(CompareEyes); // ok
|
|
|
|
for (var i=0,len=z.length;i<len;i++) {
|
|
result+=((Color._map[z[i].color])+"\r\n");
|
|
~~~~
|
|
!!! Property '_map' does not exist on type 'typeof Color'.
|
|
}
|
|
|
|
var eeks:IFrenchEye[] = [];
|
|
for (var j=z.length=1;j>=0;j--) {
|
|
eeks[j]=z[j]; // nope: element assignment
|
|
~~~~~~~
|
|
!!! Type 'IEye' is not assignable to type 'IFrenchEye':
|
|
!!! Property 'coleur' is missing in type 'IEye'.
|
|
}
|
|
eeks=z; // nope: array assignment
|
|
~~~~
|
|
!!! Type 'IEye[]' is not assignable to type 'IFrenchEye[]':
|
|
!!! Type 'IEye' is not assignable to type 'IFrenchEye'.
|
|
return result;
|
|
}
|
|
}
|
|
|
|
M.test();
|
|
|
|
|
|
|