Γραφομηχανή - διαχωρισμού της παραγωγής κώδικα

ψήφοι
1

Είμαι προσπαθεί γραφομηχανή και το βρίσκω πολύ χρήσιμο.

Έχω ένα πολύ μεγάλο έργο και σκεφτόμουν ξαναγράφοντας το χρησιμοποιείτε γραφομηχανή. Το κύριο πρόβλημα εδώ είναι η εξής:

αρχείο A.ts:

class A extends B {
    // A stuff
}

αρχείο B.ts:

class B {
    // B stuff
}

Αν έχω συγκεντρώσει A.ts με την εντολή:

tsc --out compiledA.js A.ts

Θα πάρω το σφάλμα από τον compiler αιτία δεν ξέρει πώς να την απειλή της «Β» μετά την επεκτείνει.

Έτσι, ένα «λύση» θα ήταν συμπεριλαμβανομένων A.ts (ως πρώτη γραμμή του κώδικα):

/// <reference path=./B.ts />

Συγκέντρωση και πάλι A.ts με την ίδια εντολή

tsc --out compiledA.js A.ts

Θα οδηγήσει σε compiledA.js περιέχει τόσο B.ts και τον κωδικό A.ts. (Η οποία θα μπορούσε να είναι πολύ ωραία)

Στην περίπτωσή μου, το μόνο που χρειάζεται για να καταρτίσει τον κώδικα A.ts στο αρχείο compiledA.js και δεν θέλω τα B.ts πράγματα για να είναι εκεί.

Πράγματι, αυτό που θέλω είναι:

  • TSC --out A.js A.ts => συγκεντρώνουν μόνο αυτά A.ts
  • TSC --out B.js B.ts => συγκεντρώνουν μόνο αυτά B.ts

Μπορώ να το κάνω με την απομάκρυνση του «επεκτείνεται» λέξη-κλειδί, αλλά κάνουν πως θα χάσει το μεγαλύτερο μέρος της καλοσύνης γραφομηχανή.

Μπορεί κάποιος να μου telll αν υπάρχει ένας τρόπος για να το κάνετε αυτό;

Δημοσιεύθηκε 03/10/2012 στις 12:54
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
2

Μετά από κάποια έρευνα ανακάλυψα ότι το πρόβλημα παρουσιάστηκε από την --out επιχείρημα του compiler.

@silent__thought λύση δουλεύει μια χαρά, αν θέλετε να ασχοληθεί με ενότητες. Αν δεν είστε, θα πρέπει να χρησιμοποιήσετε τη δήλωση απαιτείται (δείτε το θέμα) και, στη συνέχεια, τη σύνταξη του φακέλου «main.ts» withouth την --out επιχείρημα

Απαντήθηκε 03/10/2012 στις 20:27
πηγή χρήστη

ψήφοι
0

EDIT: Όπως Andrea επισημαίνει, αν παραλείψετε την --outπαράμετρο θα πάρετε αναμένεται η συμπεριφορά, δηλαδή δεν συνδυασμός των αρχείων προέλευσης. Θα αφήσει κάτω από αυτή την εναλλακτική λύση incase μπορεί να βοηθήσει κάποιος άλλος.


Πιστεύω ότι θα πρέπει να χρησιμοποιήσετε την εξωτερική σύνταξη μονάδα (CommonJS ή AMD) για να γίνει αυτό.

Χρησιμοποιώντας το παράδειγμα σας:

a.ts

import B = module("b")

class A extends B.B {
    // A stuff
}

b.ts

export class B {
    // B stuff
}

Συντάξτε με tsc --out compiledA.js A.ts.

Αυτό έχει ως αποτέλεσμα a.jsτην εισαγωγή b.jsχρησιμοποιώντας το σύστημα CommonJS. Τα αρχεία που προκύπτουν είναι κάπως έτσι:

a.ts

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
}
var B = require("./b")
var A = (function (_super) {
    __extends(A, _super);
    function A() {
        _super.apply(this, arguments);

    }
    return A;
})(B.B);

b.ts

var B = (function () {
    function B() { }
    return B;
})();
exports.B = B;
Απαντήθηκε 03/10/2012 στις 14:59
πηγή χρήστη

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