Hogyan lehet létrehozni Környezeti osztály nyilatkozatok géppel

szavazat
7

Én próbál létrehozni egy .d.ts fájlt a KineticJS könyvtárban. Eddig létre az alábbi felületen nyilatkozat „kinect.d.ts.” (I nyírt a kód egy kicsit az StackOverflow de remélem, az ötlet)

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

Reméltem, ez elég lenne ahhoz, hogy hozzon létre egy Kinetic.Rect objektumot én app.ts fájl

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

De úgy tűnik, van némi plusz munkát, hogy használja a KineticJS osztályok (például téglalap) géppel. Tudna valaki adni néhány támpontot, hogy hogyan archiválja ezt?

A kérdést 05/10/2012 11:18
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
6

Megnézted a géppel például app: http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#samples/imageboard/mongodb.ts

A kód ezen a linken teremt meghatározás a MongoDB könyvtárban. Az egyik különbség e között és a Sohnee válasz az, hogy Sohnee hajtja végre a kivitelező ellentétben a következő kódot nyissz a link, ami egy csonka osztályban. Nem elég jó hírnevét kérni Sohnee az elfogadott választ, hogy miért ő hajtotta végre a kivitelező közötti környezeti osztály?

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);
Válaszolt 05/10/2012 14:50
a forrás felhasználó

szavazat
5

Itt van a működő példa létrehozásának környezeti definíciókat a Kinetic osztály:

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

Figyeljük meg, hogy én használtam declare var Kinetic: IKinetic;mondani géppel, hogy Kinetic az adott típust.

Frissítés - 2. példa

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        
});
Válaszolt 05/10/2012 11:24
a forrás felhasználó

szavazat
0

Tudom, hogy ez most a régi, de megtalálható a kitöltött kinetic.d.ts fájl van: http://kineticjstypescript.codeplex.com/

Válaszolt 31/01/2013 05:17
a forrás felhasználó

szavazat
0

ITodoStorage valóban felület, TodoStorage a végrehajtás, de nem szeretnék meghatározni osztály, mert ez erőt nekem, hogy végre minden tagjának. Ehelyett teszek TodoStorage felületét is. Végül kijelentem var a kivitelező új kulcsszót.

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

declare interface TodoStorage extends ITodoStorage {
}

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

Akkor én vagyok képes, hogy hívja a kivitelező

var storageService : ITodoStorage = new TodoStorage();

Sajnos a var rejtőzik a TodoStorage típusát.

Válaszolt 25/11/2012 00:24
a forrás felhasználó

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