Πώς μπορώ να δημιουργήσω Class περιβάλλοντος δηλώσεις στη γραφομηχανή

ψήφοι
7

Είμαι προσπαθεί να δημιουργήσει ένα αρχείο .d.ts για τη βιβλιοθήκη KineticJS. Μέχρι στιγμής έχω δημιουργήσει την ακόλουθη δήλωση διασύνδεσης «kinect.d.ts». (Ι περικοπεί ο κωδικός λίγο για Stackoverflow, αλλά ελπίζω ότι μπορείτε να πάρετε την ιδέα)

module Kinetic {

    interface Rect extends  Shape {
        constructor (config) ;
    }

    interface Shape extends Node
    { 

    }

    interface Node {
        constructor (config);
        clone(attrs): Node;
        getAbsoluteOpacity(): number;
        getAbsolutePosition(): any;       

        /*
        other methods removed for stackoverflow example
        */
    }
}

Ήλπιζα ότι αυτό θα είναι αρκετό για να είναι σε θέση να δημιουργήσει ένα αντικείμενο Kinetic.Rect στο αρχείο app.ts μου

/// <reference path=Kinetic.d.ts />
var rect = new Kinetic.Rect({
          x: 239,
          y: 75,
          width: 100,
          height: 50        
        });

Αλλά φαίνεται έχω να κάνω κάποια επιπλέον εργασία για να χρησιμοποιήσετε τις κατηγορίες KineticJS (όπως Ορθ) στη γραφομηχανή. Θα μπορούσε κάποιος να δώσει κάποιες πληροφορίες για το πώς να αρχειοθετήσετε αυτό;

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


4 απαντήσεις

ψήφοι
6

Έχετε εξετάσει το παράδειγμα εφαρμογής γραφομηχανή σε: http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#samples/imageboard/mongodb.ts

Ο κώδικας σε αυτό το σύνδεσμο δημιουργεί έναν ορισμό για τη βιβλιοθήκη MongoDB. Μια διαφορά ανάμεσα σε αυτό και την απάντηση Sohnee είναι ότι Sohnee εφαρμόζει ο κατασκευαστής σε αντίθεση με τον κωδικό απόκομμα από το σύνδεσμο που είναι μια κατηγορία στέλεχος. Δεν έχω αρκετή φήμη να ζητήσει Sohnee στην αποδεκτή απάντηση γιατί σε εφαρμογή τον κατασκευαστή για μια κλάση περιβάλλοντος;

declare module "mongodb" {
   export class Server {
       constructor(host: string, port: number, opts?: any, moreopts?: any);
   }
   export class Db {
       constructor(databaseName: string, serverConfig: Server);
       public open(callback: ()=>void);
Απαντήθηκε 05/10/2012 στις 14:50
πηγή χρήστη

ψήφοι
5

Εδώ είναι το παράδειγμα εργασίας μου για τη δημιουργία ορισμών περιβάλλοντος για Κινητική τάξη σας:

interface Shape {
    x: number;
    y: number;
    width: number;
    height: number;
}

interface IKinetic {
    Rect(shape: Shape);
}

declare var Kinetic: IKinetic;

var rect = <Shape> new Kinetic.Rect({
  x: 239,
  y: 75,
  width: 100,
  height: 50        
});

Σημειώστε ότι έχω χρησιμοποιήσει declare var Kinetic: IKinetic;για να πει γραφομηχανή ότι η κινητική είναι του συγκεκριμένου τύπου.

Ενημέρωση - Παράδειγμα 2

interface IShape {
    x: number;
    y: number;
    width: number;
    height: number;
}

interface IRect extends IShape {

}

module Kinetic {
    export class Rect implements IRect {
        public x: number;
        public y: number;
        public width: number;
        public height: number;
        constructor(rect: IShape) {
            this.x = rect.x;
            this.y = rect.y;
            this.width = rect.width;
            this.height = rect.height;
        }
    }
}

var rect = new Kinetic.Rect({
  x: 239,
  y: 75,
  width: 100,
  height: 50        
});
Απαντήθηκε 05/10/2012 στις 11:24
πηγή χρήστη

ψήφοι
0

Αντιλαμβάνομαι αυτό είναι πλέον παλιό, αλλά μπορείτε να βρείτε ένα ολοκληρωμένο αρχείο kinetic.d.ts εδώ: http://kineticjstypescript.codeplex.com/

Απαντήθηκε 31/01/2013 στις 05:17
πηγή χρήστη

ψήφοι
0

ITodoStorage είναι πραγματικά διασύνδεση, TodoStorage είναι η εφαρμογή, αλλά δεν θα ήθελα να καθορίσουν την κατηγορία, γιατί αυτό θα με αναγκάσει να εφαρμόσουν όλα τα μέλη. Αντί να κάνω διεπαφή TodoStorage επίσης. Τέλος δηλώνω var ως κατασκευαστής με νέα λέξη-κλειδί.

declare interface ITodoStorage {
    get_todos() : TodoItem[];
    set_todos(value : TodoItem[]) : void;
}

declare interface TodoStorage extends ITodoStorage {
}

declare var TodoStorage : { 
    new (): TodoStorage;
}

Τότε θα είμαι σε θέση να καλέσετε τον κατασκευαστή

var storageService : ITodoStorage = new TodoStorage();

Δυστυχώς το var κρύβει τον τύπο TodoStorage.

Απαντήθηκε 25/11/2012 στις 00:24
πηγή χρήστη

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