2014-07-13 01:04:16 +02:00
|
|
|
//// [interfaceImplementation1.ts]
|
|
|
|
interface I1 {
|
|
|
|
iObj:{ };
|
|
|
|
iNum:number;
|
|
|
|
iAny:any;
|
|
|
|
iFn():void;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface I2 {
|
|
|
|
iFn(n:number, s:string):void;
|
|
|
|
}
|
|
|
|
|
|
|
|
class C1 implements I1,I2 {
|
|
|
|
private iFn();
|
|
|
|
private iFn(n?:number, s?:string) { }
|
|
|
|
private iAny:any;
|
|
|
|
private iNum:number;
|
|
|
|
private iObj:{ };
|
|
|
|
}
|
|
|
|
|
|
|
|
interface I3 {
|
|
|
|
x: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface I4 {
|
|
|
|
():I3;
|
|
|
|
new ():I3;
|
|
|
|
[call:number]:string;
|
|
|
|
}
|
|
|
|
|
|
|
|
class C2 implements I3 {
|
|
|
|
public x = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
var a:I4 = function(){
|
|
|
|
return new C2();
|
|
|
|
}
|
|
|
|
new a();
|
|
|
|
|
|
|
|
/*var b:I4 = C2;
|
|
|
|
new b();
|
|
|
|
*/
|
|
|
|
|
|
|
|
var c:I4;
|
|
|
|
c[5];
|
|
|
|
c["foo"];
|
|
|
|
|
|
|
|
|
|
|
|
//// [interfaceImplementation1.js]
|
|
|
|
var C1 = (function () {
|
|
|
|
function C1() {
|
|
|
|
}
|
|
|
|
C1.prototype.iFn = function (n, s) {
|
|
|
|
};
|
|
|
|
return C1;
|
|
|
|
})();
|
|
|
|
var C2 = (function () {
|
|
|
|
function C2() {
|
|
|
|
this.x = 1;
|
|
|
|
}
|
|
|
|
return C2;
|
|
|
|
})();
|
|
|
|
var a = function () {
|
|
|
|
return new C2();
|
|
|
|
};
|
|
|
|
new a();
|
2014-08-14 23:43:28 +02:00
|
|
|
/*var b:I4 = C2;
|
|
|
|
new b();
|
2014-08-12 00:54:12 +02:00
|
|
|
*/
|
2014-07-13 01:04:16 +02:00
|
|
|
var c;
|
|
|
|
c[5];
|
|
|
|
c["foo"];
|