Как мне напечатать модель, которая будет вести себя как объект в петлеобразной петле? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть петлевая модель, которая (во многих случаях) представлена ​​в виде необработанного json. например,

@model()
class SomeModel extends Entity {
  @property({ type: 'string' })
  id?: string;
}

... в сыром json будет

interface IRawSomeModel {id?: string}

Есть ли способ получить IRawSomeModel программно?

Один из способов, который я могу придумать, - это объединить два, но это большая дополнительная работа, требующая повторения всего, например,

export interface IRawSomeModel {id?: string}

@model()
export class SomeModel extends Entity implements IRawSomeModel {
  @property({ type: 'string' })
  id?: string;
}

В конечном счете, я ищу что-то похожее на синтаксис RawObjectFormOfModel<SomeModel>

Смысл всего этого в том, чтобы иметь возможность иметь такой код:

const obj: RawObjectFormOfModel<SomeModel> = {}; // no error about missing class functions
obj.id = "test"

Каков наилучший способ получения необработанного представления типов объектов для моделей?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Лучший способ найти способ сделать это - создать интерфейс и реализовать его.

export interface IRawSomeModel {id?: string}

@model()
export class SomeModel extends Entity implements IRawSomeModel {
  @property({ type: 'string' })
  id?: string;
}

Я надеюсь, что смогу найти способ взять информацию декоратора и использовать ее для генерацииинтерфейс.

0 голосов
/ 29 марта 2019

В классе Entity в lb4 доступно два метода. toJSON () и toObject () .Они оба возвращают простое объектное представление класса модели.Вы можете использовать их для этой цели.

Из определения dts "model.d.ts"

/**
 * Serialize into a plain JSON object
 */
toJSON(): Object;
/**
 * Convert to a plain object as DTO
 */
toObject(options?: Options): Object;
...