有什么方法可以在 tsconfig 中设置严格模式下使用 Loopback 4?

Any way to use Loopback 4 with strict mode set in tsconfig?

我需要在 tsconfig.json 中将 strict 设置为 true,但这会导致问题。例如,未设置模型中的必填字段会导致打字稿错误。有什么方法可以使 tsc 具有环回 4 的严格性?

以他们文档中的示例代码为例:

@model()
export class Todo extends Entity {
  @property({
    type: 'number',
    id: true,
  })
  id?: number;

  @property({
    type: 'string',
    required: true,
  })
  title: string;

  @property({
    type: 'string',
  })
  desc?: string;

  @property({
    type: 'boolean',
  })
  isComplete: boolean;

  @belongsTo(() => TodoList)
  todoListId: number;

  getId() {
    return this.id;
  }

  constructor(data?: Partial<Todo>) {
    super(data);
  }
}

如果您在 tsconfig.json 编译器选项中打开 strict,您将收到如下错误:

Property 'title' has no initializer and is not definitely assigned in the constructor. 

编辑:我希望有一种不涉及默认的方式。

Edit2:再次查看代码后,我认为以下内容确实有效。

  constructor(data: Todo) {
    super(data);
    this.title = data.title;
    this.isComplete = data.isComplete;
  }

来自 LoopBack 团队的问候

抓得好!我们在设计模型的时候没有考虑到这个方面 类.

我认为这个问题是由 strictPropertyInitialization 设置触发的。引用自 TypeScript 文档:

Ensure non-undefined class properties are initialized in the constructor.

我可以看到我们当前的类型定义如何允许开发人员创建无效的模型实例,因为一些必需的属性未初始化。

能否请您在我们的项目中打开一个 GitHub 问题,以便我们进一步讨论如何解决此问题?

同时,您可以尝试在 tsconfig.json 中禁用 strictPropertyInitialization 吗?