(TypeScript)为Parse SDK(浏览器和节点)创buildtypes定义

我正在为Parse Javascript SDK创build一个Typescripttypes定义。 它实际上是完整的。 该定义适用于浏览和云代码,但不适用于Node。

使用parsing与客户端和服务器端JavaScript

浏览示例:

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

节点示例:

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

Psueduetypes定义

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

使用parsing与新创build的定义

 class GameScore extends Parse.Object {} var gameScore = new GameScore(); 

因为Parse库是全局可用的,所以在Browse中一切正常。

现在在Node中,如果导入是这样的,一切都可以正常工作:

 var Parse = require("parse"); 

但是导入实际上是这样的:

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

因此,导入结束时的“.Parse”在尝试访问Parse.Object时会导致问题,因为在上面的定义中没有“.Parse”的访问

所以我想要做的是有一个单一的定义文件,适用于浏览器和节点。 我想过使用一个接口,但我不认为这将允许我做扩展或实现时,我想。

例如:

 declare module Parse { ... interface Parse { Object: Object; } } declare module "parse" { export = Parse; } 

这不允许我扩展Object ,它只是被定义为Parse接口中的一个属性。

任何帮助将是伟大的。 谢谢。

这是有点涉及:

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

用法:

 ///<reference path="parse.d.ts"/> import parse = require('parse'); var Parse = parse.Parse; 

说明

要引用你需要的typeof模块的types。 知道这一点,你可能想要做以下事情,但不能明显的原因(这是什么Parse ?…全球?或本地?):

 var Parse: { Parse: typeof Parse } export = Parse; 

因此,本地types的详细程度。 别担心,它们不会以任何方式膨胀生成的JavaScript。