Hoe maak ik Ambient Class verklaringen met de schrijfmachine

stemmen
7

Ik ben op zoek naar een .d.ts bestand voor de KineticJS bibliotheek te creëren. Tot nu toe heb ik het volgende interface-verklaring kinect.d.ts. (I bijgesneden de code een beetje voor StackOverflow, maar ik hoop dat je het idee) creëerde

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

Ik hoopte dat dit genoeg zou zijn om te kunnen een Kinetic.Rect object te maken in mijn app.ts bestand

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

Maar het lijkt ik moet wat extra werk aan de KineticJS klassen (zoals Rect) gebruiken met de schrijfmachine te doen. Kan iemand enkele tips over hoe dit te archiveren?

De vraag is gesteld op 05/10/2012 om 11:18
bron van user
In andere talen...                            


4 antwoorden

stemmen
6

Hebt u gekeken naar het typoscript voorbeeld app: http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#samples/imageboard/mongodb.ts

De code op deze link zorgt voor een definitie voor het MongoDB bibliotheek. Een verschil tussen deze en de Sohnee antwoord is dat Sohnee implementeert de constructeur in tegenstelling tot de volgende code snip uit het verband dat is a stomp klasse. Ik weet niet genoeg reputatie Sohnee in de geaccepteerde antwoord vragen waarom hij de aannemer voor een omgevingstemperatuur klasse geïmplementeerd?

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);
antwoordde op 05/10/2012 om 14:50
bron van user

stemmen
5

Hier is mijn werkend voorbeeld van het creëren van ambient definities voor uw 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        
});

Merk op dat ik heb gebruikt declare var Kinetic: IKinetic;om typoscript vertellen dat Kinetic is van het bijzondere type.

Update - Voorbeeld 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        
});
antwoordde op 05/10/2012 om 11:24
bron van user

stemmen
0

Ik besef dat dit is nu oud, maar u kunt een voltooide kinetic.d.ts bestand vindt u hier: http://kineticjstypescript.codeplex.com/

antwoordde op 31/01/2013 om 05:17
bron van user

stemmen
0

ITodoStorage is echt een interface, TodoStorage is implementatie, maar ik zou niet graag klasse te definiëren, want dat zou me dwingen om alle leden te implementeren. In plaats daarvan maak ik TodoStorage-interface ook. Tot slot Ik verklaar var als constructeur met nieuw zoekwoord.

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

declare interface TodoStorage extends ITodoStorage {
}

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

Dan ben ik in staat om de aannemer te bellen

var storageService : ITodoStorage = new TodoStorage();

Helaas is de var is het verbergen van de TodoStorage type.

antwoordde op 25/11/2012 om 00:24
bron van user

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