मैं टाइपप्रति में परिवेश कक्षा घोषणाएं कैसे बना सकता हूँ

वोट
7

मैं KineticJS पुस्तकालय के लिए एक .d.ts फ़ाइल बनाने के लिए कोशिश कर रहा हूँ। अब तक मैं निम्नलिखित इंटरफ़ेस घोषणा kinect.d.ts। (मैं कोड stackoverflow के लिए एक सा काटा लेकिन मुझे आशा है कि आप विचार प्राप्त) बनाया है

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

मैं आशा व्यक्त की यह पर्याप्त होगा मेरी app.ts फ़ाइल में एक Kinetic.Rect वस्तु बनाने के लिए सक्षम होने के लिए

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

लेकिन ऐसा लगता है मैं कुछ अतिरिक्त काम टाइपप्रति में KineticJS वर्गों (रेक्ट) की तरह उपयोग करने के लिए क्या करना है। किसी को भी यह कैसे संग्रह करने के लिए पर कुछ संकेत दे सकते हैं?

05/10/2012 को 11:18
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
6

आप टाइपप्रति उदाहरण ऐप पर पर ध्यान दिया है: http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#samples/imageboard/mongodb.ts

इस लिंक पर कोड MongoDB पुस्तकालय के लिए एक परिभाषा पैदा करता है। इस और Sohnee जवाब में एक अंतर यह है कि Sohnee लिंक जो एक ठूंठ वर्ग है से निम्नलिखित कोड स्निप के विपरीत निर्माता को लागू करता है। मैं स्वीकार किए जाते हैं जवाब में Sohnee पूछने के लिए क्यों वह एक परिवेश वर्ग के लिए निर्माता कार्यान्वित पर्याप्त प्रतिष्ठा नहीं है?

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);
05/10/2012 को 14:50
का स्रोत उपयोगकर्ता

वोट
5

यहाँ अपने काइनेटिक वर्ग के लिए परिवेश परिभाषाओं बनाने के अपने काम कर उदाहरण है:

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

ध्यान दें कि मैं का इस्तेमाल किया है declare var Kinetic: IKinetic;टाइपप्रति बताने के लिए कि काइनेटिक विशेष प्रकार का है।

अपडेट - उदाहरण 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        
});
05/10/2012 को 11:24
का स्रोत उपयोगकर्ता

वोट
0

मुझे पता है यह अब पुरानी है, लेकिन आप एक पूरा kinetic.d.ts फ़ाइल यहाँ पा सकते हैं: http://kineticjstypescript.codeplex.com/

31/01/2013 को 05:17
का स्रोत उपयोगकर्ता

वोट
0

ITodoStorage वास्तव में इंटरफेस है, TodoStorage कार्यान्वयन है, लेकिन क्योंकि है कि सभी सदस्य लागू करने के लिए मुझे मजबूर होना पड़ा रहा, वर्ग को परिभाषित करने के लिए नहीं करना चाहते हैं। इसके बजाय मैं भी TodoStorage इंटरफेस बनाते हैं। अंत में मैं नए कीवर्ड के साथ निर्माता के रूप में वर घोषणा करते हैं।

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

declare interface TodoStorage extends ITodoStorage {
}

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

तब मैं निर्माता कॉल करने के लिए कर सकती हूं

var storageService : ITodoStorage = new TodoStorage();

दुर्भाग्य से वर TodoStorage प्रकार छिपा है।

25/11/2012 को 00:24
का स्रोत उपयोगकर्ता

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