Ear*_*son 5 javascript node.js parse-platform typescript
我正在为Parse Javascript SDK创建一个Typescript类型定义.它实际上已经完成了.该定义适用于Browse和Cloud Code,但不适用于Node.
使用Parse同时使用客户端和服务器端javascript
浏览示例:
var GameScore = Parse.Object.extend("GameScore");
Run Code Online (Sandbox Code Playgroud)
节点示例:
var Parse = require('parse').Parse;
var GameScore = Parse.Object.extend("GameScore");
Run Code Online (Sandbox Code Playgroud)
Psuedue类型定义
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;
}
Run Code Online (Sandbox Code Playgroud)
使用Parse与新创建定义
class GameScore extends Parse.Object {}
var gameScore = new GameScore();
Run Code Online (Sandbox Code Playgroud)
一切都可以在Browse中正常工作,因为Parse库是全局可用的.
现在在Node中如果导入是这样的话,一切都会正常工作:
var Parse = require("parse");
Run Code Online (Sandbox Code Playgroud)
但导入实际上是这样的:
var Parse = require("parse").Parse;
Run Code Online (Sandbox Code Playgroud)
因此,导入结尾处的".Parse"会在尝试访问Parse.Object时导致问题,因为上面的定义中没有".Parse"的访问器.
所以我想要做的是有一个适用于浏览器和节点的单一定义文件.我想过使用一个接口,但我不认为这会让我在我想要的时候做扩展或实现.
例如:
declare module Parse {
...
interface Parse {
Object: Object;
}
}
declare module "parse" {
export = Parse;
}
Run Code Online (Sandbox Code Playgroud)
这不允许我扩展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;
}
Run Code Online (Sandbox Code Playgroud)
用法:
///<reference path="parse.d.ts"/>
import parse = require('parse');
var Parse = parse.Parse;
Run Code Online (Sandbox Code Playgroud)
要参考所需模块的类型typeof.知道了这一点,你可能想要做以下但不能出于明显的原因(这Parse是??全局的?还是本地的?):
var Parse: { Parse: typeof Parse }
export = Parse;
Run Code Online (Sandbox Code Playgroud)
因此本地类型的冗长.不要担心它们不会以任何方式膨胀生成的JavaScript.