Hvordan oppretter jeg Ambient Klassedeklarasjoner i Loggfila

stemmer
7

Jeg prøver å lage en .d.ts fil for KineticJS biblioteket. Så langt har jeg laget følgende grensesnitt erklæring kinect.d.ts. (Jeg beskjæres koden litt for Stackoverflow, men jeg håper du skjønner poenget)

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
        */
    }
}

Jeg håpet at dette ville være nok til å kunne lage en Kinetic.Rect objekt i min app.ts fil

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

Men det synes jeg må gjøre litt ekstra arbeid å bruke KineticJS klasser (som Rekt) i typescript. Kan noen gi noen tips om hvordan du kan arkivere dette?

Publisert på 05/10/2012 klokken 10:18
kilden bruker
På andre språk...                            


4 svar

stemmer
6

Har du sett på Loggfila eksempel app: http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#samples/imageboard/mongodb.ts

Koden på denne linken skaper en definisjon for mongodb biblioteket. En forskjell mellom dette og Sohnee svaret er at Sohnee implementerer konstruktøren i kontrast til følgende kode klipp fra linken som er en spire klasse. Jeg har ikke nok rykte til å spørre Sohnee i den aksepterte svaret på hvorfor han iverk konstruktøren for en ambient klasse?

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);
Svarte 05/10/2012 kl. 13:50
kilden bruker

stemmer
5

Her er mitt arbeids eksempel på å skape omgivelses definisjoner for Kinetic klasse:

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        
});

Legg merke til at jeg har brukt declare var Kinetic: IKinetic;til å fortelle Loggfila som Kinetic er av den aktuelle typen.

Update - Eksempel 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        
});
Svarte 05/10/2012 kl. 10:24
kilden bruker

stemmer
0

Jeg skjønner at dette er nå gamle, men du kan finne et ferdig kinetic.d.ts fil her: http://kineticjstypescript.codeplex.com/

Svarte 31/01/2013 kl. 04:17
kilden bruker

stemmer
0

ITodoStorage er virkelig grensesnitt, TodoStorage er implementering, men jeg ville ikke like å definere klassen, fordi det ville tvinge meg til å implementere alle medlemmer. I stedet gjør jeg TodoStorage grensesnittet. Til slutt erklærer jeg var som konstruktør med nye søkeord.

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

declare interface TodoStorage extends ITodoStorage {
}

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

Da er jeg i stand til å ringe konstruktøren

var storageService : ITodoStorage = new TodoStorage();

Dessverre Var skjuler TodoStorage type.

Svarte 24/11/2012 kl. 23:24
kilden bruker

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