Gépelt: meghatározza az osztály és módszerek külön fájlokban

szavazat
4

Lehetséges, hogy állapítsa meg egy osztály egy fájlt, és meghatározza annak módszereit külön fájlokban?

Van néhány osztályok sok módszerek és jó lenne, ha én is terjedhet ki őket egy kicsit.

A kérdést 03/10/2012 11:10
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
6

Rövid válasz: géppel nem támogatja felosztására egy osztálydefiníciót több fájlt.

Tüneti : Meg lehetne határozni egy interfész, amely tagja az osztály, és két különböző osztályok végrehajtó felület. Ezután Mixin tulajdonságok egyik osztályból a másik, hogy egy kombinált osztály. Például:

LargeClass.a.ts

interface LargeClass {
   methodA(): string;
   methodB(): string;
}

class LargeA implements LargeClass {
   methodA: () => string; // not implemented, needed since otherwise we don't extend LargeClass
   methodB() {
     return "Hello world";
   }
}

LargeClass.b.ts

class LargeB implements LargeClass {
   methodA() {
     return "Foo";
   }
   methodB: () => string; // not implemented, needed since otherwise we don't extend LargeClass
}

Usage.ts

// Using underscore's extend to copy implementation from A to B
var c:LargeClass = _.extend(new LargeA(), new LargeB());

// Manually mixing in a to b
var a = new LargeA();
var b:LargeClass = new LargeB();
for (var prop in a) {
    b[prop]=a[prop];
}

Ez nem fog működni, ha szüksége van a konstruktőrök az osztály, mégis. És tényleg ez az optimálistól elmaradó ... A megoldás mégis :)

Ja, mellesleg, ez működik, mert géppel nem bocsát unitialised tulajdon / mező típusát nyilatkozatok osztályok - csak használja őket típusellenőrzés.

Azt is észre, hogy ezt megteheti anélkül interfészek és csak az osztály konstrukció egy szebb utat ... elmegyek, hogy hogyan kell csinálni, hogy az edzés során az olvasók most ...

Válaszolt 03/10/2012 11:38
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more