Γραφομηχανή: Εφαρμογή διασύνδεσης με τον κατασκευαστή είναι δυνατόν;

ψήφοι
4

Έχω την ακόλουθη διασύνδεση:

interface SMJSPacket {
  header: {
    tag: string;
    method: string;
    type: string;
  };
  response?: {
    status: string;
    content: string;
  };
  event?: {
    key?: string;
    action?: string;
  };
  request?: {
    run?: string;
  };
}

Και τότε θέλω να το εφαρμόσει ως τάξη και τις ιδιότητες που καθορίζονται στο κατασκευαστή:

  class Request implements SMJSPacket {
    constructor(data: any, method: string) {
      this.header = {
        type: 'request',
        method: method || 'calld',
        tag: Request.getTag()
      }
      this.request = data;
    }
    static getTag(): string {
      return '_' + goog.now() + '_' + utils.getRandomBetween(1, 1000);
    }
  }

Ωστόσο, σύμφωνα με το αίτημα compiler δεν εφαρμόζει το περιβάλλον. Δεν καταλαβαίνω πώς να το ελέγξετε, ενώ έχει γεμίσει τα πάντα, ανάλογα με το περιβάλλον κατά τη φάση κατασκευής και αν γραμμένο σε JavaScript αυτό θα δουλεύουν μια χαρά, πληκτρολογήστε τον έλεγχο το ίδιο πράγμα με τα εργαλεία κλείσιμο λειτουργεί τέλεια. Η ιδέα είναι ότι θέλω να εφαρμόσουν το περιβάλλον ως τάξη έτσι μπορώ να έχω μεθόδους χρησιμότητα στο πρωτότυπο, αλλά εξακολουθεί να είναι σε θέση να μετατρέψει εύκολα σε JSON κορδόνι.

Καμιά ιδέα?

Ευχαριστώ

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


1 απαντήσεις

ψήφοι
7

Η υπηρεσία γλώσσα θα αναλύσει στατικά δήλωση σας περιβάλλον σας, και επειδή έχετε εκφραστεί ότι απαιτεί ότι το headerμέλος, που θα πρέπει να αποτελούν μέρος της δήλωσης κατηγορίας:

class Request implements SMJSPacket {
    header: { tag: string; method: string; type: string; };

    constructor(data: any, method: string) {
        this.header = {
            type: "request",
            method: (method || "calld"),
            tag: Request.getTag()
        };
    }

    static getTag(): string {
        return "tag stuff";
    }
}

Μην ανησυχείτε, η έξοδος javascript είναι πολύ πιο λιτή:

var Request = (function () {
    function Request(data, method) {
        this.header = {
            type: "request",
            method: (method || "calld"),
            tag: Request.getTag()
        };
    }
    Request.getTag = function getTag() {
        return "tag stuff";
    }
    return Request;
})();
Απαντήθηκε 08/10/2012 στις 13:48
πηγή χρήστη

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