¿Cómo se crea Declaraciones ambiente de clase a máquina de escribir

votos
7

Estoy tratando de crear un archivo .d.ts para la biblioteca KineticJS. Hasta ahora he creado la siguiente declaración de interfaz kinect.d.ts. (Coseché el código un poco para stackoverflow pero espero que se entiende la idea)

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

Tenía la esperanza de que esto sea suficiente para poder crear un objeto Kinetic.Rect en mi archivo app.ts

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

Pero parece que tengo que hacer un trabajo extra para usar las clases KineticJS (como Rect) a máquina de escribir. Podría alguien dar algunos consejos sobre cómo archivar la presente?

Publicado el 05/10/2012 a las 11:18
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
6

¿Has mirado en el ejemplo aplicación mecanografiado en: http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#samples/imageboard/mongodb.ts

El código en este enlace crea una definición para la biblioteca mongodb. Una diferencia entre esto y la respuesta es que Sohnee Sohnee implementa el constructor en contraste con la sección de código siguiente desde el enlace que es una clase trozo. No tengo la reputación suficiente para pedir Sohnee en la respuesta aceptada por qué se implementó el constructor para una clase de ambiente?

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);
Respondida el 05/10/2012 a las 14:50
fuente por usuario

votos
5

Aquí está mi ejemplo práctico de creación de definiciones de ambiente para su clase cinética:

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

Nótese que he utilizado declare var Kinetic: IKinetic;para decir que mecanografiado cinética es del tipo particular.

Update - Ejemplo 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        
});
Respondida el 05/10/2012 a las 11:24
fuente por usuario

votos
0

Soy consciente de que ahora es viejo, pero se puede encontrar un archivo kinetic.d.ts completado aquí: http://kineticjstypescript.codeplex.com/

Respondida el 31/01/2013 a las 05:17
fuente por usuario

votos
0

ITodoStorage es realmente interfaz, es TodoStorage aplicación, pero no me gustaría definir la clase, porque eso me obligan a poner en práctica todos los miembros. En vez hago interfaz TodoStorage también. Finalmente declaro var como constructor de la nueva palabra clave.

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

declare interface TodoStorage extends ITodoStorage {
}

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

Entonces soy capaz de llamar al constructor

var storageService : ITodoStorage = new TodoStorage();

Por desgracia, el var se esconde el tipo TodoStorage.

Respondida el 25/11/2012 a las 00:24
fuente por usuario

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