【发布时间】:2023-03-16 19:28:01
【问题描述】:
我正在为Parse Javascript SDK 创建一个 Typescript 类型定义。它实际上是完整的。该定义适用于 Browse 和 Cloud Code,但不适用于 Node。
将 Parse 与客户端和服务器端 javascript 一起使用
浏览示例:
var GameScore = Parse.Object.extend("GameScore");
节点示例:
var Parse = require('parse').Parse;
var GameScore = Parse.Object.extend("GameScore");
伪类型定义
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" 会在尝试访问 Parse.Object 时导致问题,因为“.Parse”没有访问器在上面的定义中。
所以我想做的是有一个适用于浏览器和节点的单一定义文件。我曾考虑过使用接口,但我认为这不允许我在需要时进行扩展或实现。
例如:
declare module Parse {
...
interface Parse {
Object: Object;
}
}
declare module "parse" {
export = Parse;
}
这不允许我扩展 Object,它只是定义为 Parse 接口中的一个属性。
任何帮助都会很棒。谢谢。
【问题讨论】:
-
嗨,Earl,@basarat 在下面给出了他的好答案,击败了我。
-
这方面的进展如何?这是在 GitHub 上的任何地方开源的吗?
-
我也很好奇这个项目的状态。
-
@damianesteban 你们有没有搜索过 tsd,因为它在上面。只需搜索“解析”即可。
-
@fatuhoku search tsd.
标签: javascript node.js parse-platform typescript