ενότητα γραφομηχανή και την τάξη ταυτόχρονα;

ψήφοι
4

Είμαι σήμερα προσπαθεί να οικοδομήσει ένα αρχείο ορισμού γραφομηχανή για OpenLayers.

Το πρόβλημα είναι ότι σε OpenLayers υπάρχουν ορισμένες κατηγορίες που θα μεταφραστεί σε τόσο μια ενότητα και μια τάξη στη γραφομηχανή.

Για παράδειγμα, υπάρχει η Protocolκατηγορία στην ενότητα OpenLayersκαι υπάρχει μια κατηγορία Responseστην μονάδα OpenLayers.Protocol.

Πώς θα μπορούσα να διαμορφώσει ότι στην γραφομηχανή; Μπορώ να κάνω Protocolμια τάξη και να καθορίσει την Responseτάξη ως μια εσωτερική τάξη που εξάγεται; Πώς θα πάτε για την επίλυση αυτού του προβλήματος;

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


2 απαντήσεις

ψήφοι
1

Αναγνωρίσει Responseως staticπεδίο Protocolμε ένα κατασκευαστή τύπου, επιστρέφοντας ένα interfaceπου καθορίζει την Responseτάξη:

declare module OpenLayers {
    export interface IProtocolResponse {
        foo(): void;
    }

    export class Protocol {
        static Response: new () => IProtocolResponse;
    }
}

var response = new OpenLayers.Protocol.Response();
response.foo();

Επεξεργασία:

Ή όπως Άντερς επισημαίνει σε αυτήν τη λίστα συζήτηση θέμα , μπορείτε να έχετε πολλούς κατασκευαστές για την εσωτερική τάξη με αυτόν τον τρόπο:

declare module OpenLayers {
    export interface IProtocolResponse {
        foo(): void;
    }

    export class Protocol {
        static Response: {
            new (): IProtocolResponse;
            new (string): IProtocolResponse;
        };
    }
}

var response = new OpenLayers.Protocol.Response('bar');
response.foo();

Το κύριο μειονέκτημα των δύο προσεγγίσεων είναι ότι δεν μπορεί να αντλήσει μια κατηγορία από το OpenLayers.Protocol.Response.

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

ψήφοι
0

Εδώ είναι ενημερωμένη η απάντησή μου, η οποία ελπίζω ότι βοηθά - θα πρέπει να ξεκινήσετε για τον καθορισμό OpenType:

declare module OpenType {
   export class Protocol {
       constructor();
       Request;
   }
}

var x = new OpenType.Protocol();
var y = new  x.Request();
var z = x.Request;
Απαντήθηκε 09/10/2012 στις 14:37
πηγή χρήστη

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