Είναι δυνατόν να δηλώσει μια τάξη σε ένα αρχείο και να καθορίσει τις μεθόδους του σε ξεχωριστά αρχεία;
Έχω κάποιες τάξεις με πολλές μεθόδους και θα ήταν μεγάλο εάν θα μπορούσα να τους απλώνονται λίγο.
Είναι δυνατόν να δηλώσει μια τάξη σε ένα αρχείο και να καθορίσει τις μεθόδους του σε ξεχωριστά αρχεία;
Έχω κάποιες τάξεις με πολλές μεθόδους και θα ήταν μεγάλο εάν θα μπορούσα να τους απλώνονται λίγο.
Σύντομη απάντηση: γραφομηχανή δεν υποστηρίζει κατάτμηση ορισμό τάξη σε πολλά αρχεία.
Εναλλακτικός τρόπος αντιμετώπισης : Μπορείτε να ορίσετε μια διεπαφή που περιέχουν τα μέλη για την κατηγορία, και δύο διαφορετικές κατηγορίες εφαρμογή της εν λόγω διεπαφής. Στη συνέχεια Μίχίη ακίνητα από τη μία κατηγορία στην άλλη, για να κάνει μια συνδυασμένη τάξη. Για παράδειγμα:
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];
}
Αυτό δεν θα λειτουργήσει εάν χρειάζεστε κατασκευαστές για την κατηγορία, όμως. Και πραγματικά είναι αναντίστοιχο ... Η λύση, εντούτοις :)
Ω, από τον τρόπο, αυτό λειτουργεί γιατί γραφομηχανή δεν εκπέμπει unitialised δηλώσεις τύπος ακινήτου / πεδίου για τις κατηγορίες - αυτό τα χρησιμοποιεί μόνο για τον έλεγχο τύπου.
Αντιλαμβάνομαι επίσης ότι μπορείτε να το κάνετε αυτό χωρίς διασυνδέσεις και μόλις το κατασκεύασμα τάξη σε μια πιο όμορφη τρόπο ... Θα αφήσει πώς να το κάνουμε αυτό ως μια άσκηση για τους αναγνώστες για την ώρα ...