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