Nasıl daktilo Ortam Sınıf Beyanlarını oluştururum

oy
7

Ben KineticJS kütüphanesi için bir .d.ts dosyası oluşturmak için çalışıyorum. Şimdiye kadar aşağıdaki arayüz beyanı kinect.d.ts. (Ben kodu stackoverflow için biraz kırpılmış ama anladınız umarım) yarattık

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

Bunun olacağını yeterince benim app.ts dosyasında bir Kinetic.Rect nesne oluşturmak mümkün ümit

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

Ama ben daktilo (Rect gibi) KineticJS sınıflarını kullanmak için bazı ekstra iş yapmak zorunda görünür. Herkes bu arşivlemek için bazı işaretçiler verebilir misiniz?

Oluştur 05/10/2012 saat 11:18
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
6

Eğer typescript örnek uygulamasında söz baktınız mı: http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#samples/imageboard/mongodb.ts

Bu bağlantıyı kod mongodb kütüphanesi için bir tanım oluşturur. Bu ve Sohnee cevap arasındaki farklardan biri Sohnee bir taslaktır sınıfıdır bağlantısından Aşağıdaki kod kelepir aksine yapıcı uygulayan olmasıdır. Onun bir ortam sınıf için yapıcı hayata neden kabul yanıtında Sohnee soracak kadar itibar yok mu?

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);
Cevap 05/10/2012 saat 14:50
kaynak kullanıcı

oy
5

İşte Kinetik sınıf için ortam tanımları yaratma benim çalışma örneğidir:

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

Ben kullandım unutmayın declare var Kinetic: IKinetic;Kinetik türdeki olduğunu typescript anlatmak için.

Güncelleme - Örnek 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        
});
Cevap 05/10/2012 saat 11:24
kaynak kullanıcı

oy
0

Bu artık eski olduğunun farkındayım, ama burada tamamlanmış bir kinetic.d.ts dosyayı bulabilirsiniz: http://kineticjstypescript.codeplex.com/

Cevap 31/01/2013 saat 05:17
kaynak kullanıcı

oy
0

ITodoStorage gerçekten TodoStorage uygulamasıdır, arayüz, ancak tüm üyeleri uygulamak beni zorla çünkü ben, sınıfını tanımlamak istemem. Onun yerine de TodoStorage arayüzünü olun. Sonunda yeni anahtar kelime ile yapıcı var dizininde ilan ediyoruz.

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

declare interface TodoStorage extends ITodoStorage {
}

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

Sonra kurucusunu çağırmak açabiliyorum

var storageService : ITodoStorage = new TodoStorage();

Maalesef var TodoStorage türünü saklıyor.

Cevap 25/11/2012 saat 00:24
kaynak kullanıcı

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