Typescript: tanımlamak sınıf ve ayrı dosyalarda onun yöntemleri

oy
4

o tek bir dosyada bir sınıf bildirmek ve ayrı dosyalarda yöntemlerini tanımlamak mümkün mü?

Ben bazı sınıfları bir çok yöntemler ve ben onları biraz yayılmış olabilir eğer iyi olurdu.

Oluştur 03/10/2012 saat 11:10
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
6

Kısa cevap: typescript birkaç dosya içine sınıf tanımını bölme kadar desteklemez.

Geçici çözüm : Sen sınıf için üye içeren bir arabirim tanımlamak ve bu arabirimini uygulayan iki farklı sınıflar olabilir. Sonra kombine sınıf yapmak için, diğer bir sınıftan özelliklerini mixin. Örneğin:

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

Eğer sınıf için kurucular gerekiyorsa bu olsa çalışmaz. Ve gerçekten Suboptimal ... Çözüm hiçbiri az :)

typescript sınıfları için unitialised özellik / alan türü bildirimleri yaymaz çünkü arada, bu işleri - sadece tür denetleme için bunları kullanır.

Ben de arayüzleri ve daha güzel bir şekilde sadece sınıf yapısının olmadan bunu farkındayız ... Ben nasıl bırakacağım şimdilik okuyuculara bir egzersiz olarak ...

Cevap 03/10/2012 saat 11:38
kaynak kullanıcı

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