如何键入模型以在环回中像对象一样工作?

问题描述 投票:0回答:2

我有一个环回模型(在很多情况下)以自己的原始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"

获取模型的原始对象类型表示的最佳方法是什么?

typescript loopbackjs
2个回答
0
投票

lb4中的Entity类有两种方法可用。 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;

0
投票

我能找到的最好的方法是创建一个接口并实现它。

export interface IRawSomeModel {id?: string}

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

我希望我能找到一种方法来获取装饰器信息并使用它来生成界面。

© www.soinside.com 2019 - 2024. All rights reserved.