2014-09-02 55 views
5

Parse Javascript SDK için bir Typescript tür tanımı oluşturuyorum. Aslında tamamlandı. Tanım, Gözat ve Bulut Kodu için çalışır ancak Düğümde çalışmayacaktır. istemci tarafında ve sunucu tarafında hem Ayrıştırma kullanma(TypeScript) Ayrıştırma SDK (Tarayıcı ve Düğüm) için tür tanımı oluşturma

javascript

göz Örnek:

var GameScore = Parse.Object.extend("GameScore"); 

Düğüm Örnek:

var Parse = require('parse').Parse; 
var GameScore = Parse.Object.extend("GameScore"); 

Psuedue Tipi Definitio Ayrıştırma kütüphanesi genel olarak kullanılabilir, çünkü n Ayrıştırma kullanma

declare module Parse { 

    interface FacebookUtils { 
     init(options?: any); 
    } 

    class Object { 
     constructor(attributes?: any, options?: any); 

    } 

    module Cloud { 

     interface FunctionResponse { 
      success?: (response: HttpResponse) => void; 
      error?: (response: HttpResponse) => void; 
     } 
    } 

} 

declare module "parse" { 
    export = Parse; 
} 

yeni Göz ince çalışacak çözünürlüklü

class GameScore extends Parse.Object {} 

var gameScore = new GameScore(); 

her şey oluşturun.

var Parse = require("parse"); 

Ama ithalat böyle aslında:

var Parse = require("parse").Parse; 

Yani ".Parse" ithalat böyle olsaydı

Şimdi Düğüm içinde herşey güzel çalışacak İçe aktarma işleminin sonunda, yukarıdaki tanımda ".Parse" için erişim yok olduğundan, Parse.Object erişmeye çalışırken bir soruna neden olur.

Ne yapmak istediğim, hem Tarayıcı hem de Düğüm için çalışan tek bir tanım dosyasına sahip olmak. Bir arayüz kullanmayı düşündüm ama istediğimde genişletme veya uygulama yapmama izin vereceğini düşünmüyorum. Örneğin

:

declare module Parse { 

    ... 

    interface Parse { 
     Object: Object; 
    } 
} 

declare module "parse" { 
     export = Parse; 
} 

Bu beni Nesne uzatmak için izin vermeyeceğini, sadece Ayrıştırma arayüzde bir özellik olarak tanımladı.

Herhangi bir yardım harika olurdu. Teşekkürler.

+2

Merhaba Earl, @basarat bana onun iyi cevabı ile beni dövdü. – Fenton

+0

Bu konuda nasıl bir ilerleme var? Bu, GitHub'da her yerde açık kaynaklı mıydı? – fatuhoku

+0

Bu projenin durumu hakkında da merak ediyorum. – damianesteban

cevap

6

, olayın biraz:

declare module Parse { 

    interface FacebookUtils { 
     init(options?: any); 
    } 

    class Object { 
     constructor(attributes?: any, options?: any); 

    } 

    module Cloud { 

     interface FunctionResponse { 
      success?: (response: HttpResponse) => void; 
      error?: (response: HttpResponse) => void; 
     } 
    } 

} 

declare module "parse" { 
    var captureType: typeof Parse; 
    var subType: { 
     Parse: typeof captureType; 
    } 
    export = subType; 
} 

Kullanımı:

///<reference path="parse.d.ts"/> 

import parse = require('parse'); 
var Parse = parse.Parse; 

Açıklama

Eğer typeof gereken bir modül tipine bakın. Bunu bildiğinizde, aşağıdakileri yapmak isteyebilirsiniz ama açık nedenlerden ötürü yapamazsınız (Parse bu mu? ... küresel olan?ya da yerel?): Yerel Tiplerin ayrıntılarından dolayı. Endişelenmeyin, oluşturulan JavaScript’i herhangi bir şekilde şişirmezler.

+1

Awesome dude !!!! Ve düşündüğümden çok daha net. Oldukça havalı. Teşekkürler dostum!!!! –

+0

HttpResponse tanımlanmamış hatayı hala alıyorum –

İlgili konular