(TypeScript)正在为Parse SDK(浏览器和节点)创建类型定义
(TypeScript) Creating type definition for Parse SDK (Browser and Node)
我正在为Parse Javascript SDK创建一个Typescript类型定义。它实际上是完整的。该定义适用于"浏览"answers"云代码",但不适用于"节点"。
同时使用客户端和服务器端的解析javascript
浏览示例:
var GameScore = Parse.Object.extend("GameScore");
节点示例:
var Parse = require('parse').Parse;
var GameScore = Parse.Object.extend("GameScore");
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;
}
使用新创建定义的Parse
class GameScore extends Parse.Object {}
var gameScore = new GameScore();
在Browse中一切都会很好,因为Parse库是全局可用的。
现在,在Node中,如果导入如下,一切都会正常工作:
var Parse = require("parse");
但进口实际上是这样的:
var Parse = require("parse").Parse;
因此,在尝试访问Parse.Object时,导入结束时的".Parse"会导致问题,因为在上面的定义中没有".Phase"的访问器。
所以我想做的是有一个适用于浏览器和节点的单一定义文件。我曾想过使用一个接口,但我认为这不允许我在需要时进行扩展或实现
例如:
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
。知道了这一点,你可能想做以下事情,但由于明显的原因(这是哪一个Parse
?…全局的?还是本地的?):
var Parse: { Parse: typeof Parse }
export = Parse;
因此产生了局部类型的冗长。不用担心,它们不会以任何方式膨胀生成的JavaScript。
相关文章:
- 是否排除节点中错误堆栈的第一行?/节点中的自定义错误类型
- 节点.js加密输入/输出类型
- 节点.js未捕获的异常类型错误:无法设置未定义的预处理 ''
- 收到错误:无法在“节点”上执行“appendChild”:参数 1 的类型不是“节点”
- 根据类型更改 jstree 节点文本颜色
- 未捕获的类型错误:对象#<节点列表>没有方法'addEventListener'
- 获取特定类型的第一个子节点-JavaScript
- 1.js:23未捕获类型错误:执行'失败;appendChild'在'节点':参数1不是
- 未捕获的类型错误:无法执行'观察'在'突变观察者':参数1不是'节点'
- Foundation 5可能的错误:未捕获类型错误:层必须是文档节点Foundation.min.js:8
- 节点.js writeFile [未捕获的类型错误: 无法读取未定义的属性'writeFile']
- 无法在“节点”上执行“appendChild”:参数 1 的类型不是“节点”
- 类型错误:对象不是函数+节点JS
- 静态类型节点JS可能吗?即打字稿
- 节点:类型错误:无法读取未定义的属性“on”
- Locu节点类型错误:无法调用方法'呼叫'的未定义
- Javascript合并两个函数,用另一个元素检查节点类型
- 为什么appendChild不能处理节点类型
- 修改节点类型
- 防止节点类型错误使应用程序崩溃