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.
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.
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 ...