Strojopisem: definovat třída a její metody v samostatných souborech

hlasů
4

Je možné deklarovat třídu v jednom souboru a definovat své metody v samostatných souborech?

Mám některé třídy s mnoha metod a bylo by skvělé, kdybych je mohla rozložit trochu.

Položena 03/10/2012 v 11:10
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
6

Stručná odpověď: Typescript nepodporuje rozdělení do definice třídy do několika souborů.

Možné řešení : Dalo by se definovat rozhraní obsahuje členy pro třídu, a dvě různé třídy provádějící toto rozhraní. Pak mixin vlastnosti z jedné třídy do druhé, aby kombinovanou třídu. Například:

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];
}

To nebude fungovat, pokud budete potřebovat konstruktor pro třídu, ačkoli. A ve skutečnosti je to optimální ... Řešení nicméně :)

Oh, mimochodem, to funguje, protože typescript nevyzařuje unitialised deklarace typu nemovitosti / obor na výuku - používá pouze je pro kontrolu typu.

Také jsem si uvědomil, že to lze provést bez rozhraní a jen třídní konstruktu v hezčí způsobem ... nechám, jak na to jako cvičení pro čtenáře prozatím ...

Odpovězeno 03/10/2012 v 11:38
zdroj uživatelem

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