首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parse.com与TypeScript:扩展Parse.Object

Parse.com与TypeScript:扩展Parse.Object
EN

Stack Overflow用户
提问于 2016-06-05 17:37:53
回答 2查看 3.4K关注 0票数 4

免责声明:我知道,Parse.com关闭了它的托管服务。不过,我们会继续使用这个架构一段时间,所以这个问题对我们仍然很重要。

最近,我开始使用TypeScript,并认为它可能会大大提高我解析云代码的效率。所以我做了一些测试,并且成功地使用了类型记录来编写云函数等等。我甚至还包括了通过类型进行分析的类型定义。

然而,我仍然不能理解一件事:如何以一种类型安全的方式扩展Parse.Object?

在普通的js中,我会写:

代码语言:javascript
复制
var Foo = Parse.Object.extend("Foo", {
    // instance methods
}, {
    // static members
});

为了确保类型安全,我想在打字稿中写这样的东西:

代码语言:javascript
复制
class Foo extends Parse.Object {
    // static members
    // instance methods
}

这样的事有可能吗?我错过了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-14 17:44:46

是的,这是可能的。为此,有几个步骤是必要的。首先,需要将类名传递给父构造函数。

代码语言:javascript
复制
class Foo extends Parse.Object {
// static members
// instance methods
    constructor() {
        // Pass the ClassName to the Parse.Object constructor
        super('Foo');
    }

}

此外,您需要将类注册为Parse对象:

代码语言:javascript
复制
Parse.Object.registerSubclass('Foo', Foo);

之后,您只需将其用于查询,如下所示:

代码语言:javascript
复制
var query = new Parse.Query(Foo);
query.find({
    success: obj: Foo[] => {
        // handle success case
    },
    error: error => {
        // handle error
    }
});

这也适用于新的解析服务器开放源码项目:https://github.com/ParsePlatform/parse-server

票数 8
EN

Stack Overflow用户

发布于 2022-10-24 11:45:37

如果像我这样的人偶然发现了同样的问题,下面是我迄今为止的发现:

代码语言:javascript
复制
import Parse from "parse";

interface IBase {
  readonly createdAt?: Date;
  readonly updatedAt?: Date;
}

interface IMyInterface extends IBase {
  name: string;
  age?: number;
}

class MyClass extends Parse.Object<IMyInterface> {
  constructor(attributes: IMyInterface) {
    super("MyClass", attributes);
  }
}

export default MyClass;

然后,您可以这样使用它:

代码语言:javascript
复制
const newObject = new MyClass({ name: theName, age: theAge });

const result = await newObject.save();

const { attributes } = result;

console.log("Save result", attributes);

那么,您将对这些属性具有完全的TS支持。

希望有关https://www.npmjs.com/package/@parse/react的工作能够迅速进行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37644857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档