2016-06-05 4 views
0

Отказ от ответственности: Я знаю, Parse.com отключает его размещенную службу. Тем не менее, мы продолжим использовать структуру какое-то время, поэтому этот вопрос по-прежнему важен для нас.Parse.com with TypeScript: Extend Parse.Object

В последнее время я начал играть с TypeScript и понял, что он может повысить мою производительность для синтаксического анализа облачного кода. Поэтому я провел некоторое тестирование и успешно использовал машинописный текст для записи облачных функций и т. Д. Я даже включил определение типизации для синтаксиса через типизацию.

Тем не менее, я все еще не понимаю одно: как я могу расширить Parse.Object безопасным образом?

В нормальных JS я бы написать:

var Foo = Parse.Object.extend("Foo", { 
    // instance methods 
}, { 
    // static members 
}); 

Для того, чтобы получить безопасность типа, я хотел бы написать что-то подобное в машинописи:

class Foo extends Parse.Object { 
    // static members 
    // instance methods 
} 

что-то подобное возможно? Я что-то упускаю?

ответ

3

Да, это возможно. Для этого есть несколько шагов. Во-первых, вам нужно передать имя класса к родительскому конструктору

class Foo extends Parse.Object { 
// static members 
// instance methods 
    constructor() { 
     // Pass the ClassName to the Parse.Object constructor 
     super('Foo'); 
    } 

} 

Кроме того, вы должны зарегистрировать класс как объект Разбор:

Parse.Object.registerSubclass('Foo', Foo); 

После этого, вы можете просто использовать его для вашего запроса как:

var query = new Parse.Query(Foo); 
query.find({ 
    success: obj: Foo[] => { 
     // handle success case 
    }, 
    error: error => { 
     // handle error 
    } 
}); 

Это также работает для нового проекта синтаксического анализа сервера с открытым исходным кодом: https://github.com/ParsePlatform/parse-server

+0

Удивительно, большое спасибо! Я забыл «registerSubclass» в API. – dpoetzsch

+0

Кроме того, на стороне примечания необходимо определить 'createWithoutData', если он хочет его использовать: ' public static createWithoutData (objectId: string): Foo { let newObj = new Foo(); newObj.id = objectId; return newObj; } ' – dpoetzsch

Смежные вопросы