0

问题:我需要在 TypeScript Web 应用程序中使用 Vue 和 MirageJS,而在该 Web 应用程序中,我收到 TS 编译错误。

编码:

import { Server, Model } from 'miragejs'
export function makeServer({ environment = "development" } = {}) {
let server = new Server({
  environment,
  models: {
    meeting: Model,
  },
  seeds(server) {
  server.create("meeting", {
    PK_Meeting: 1,
    FamilyId: 1,
    FamilyName: 'Smith',
    MeetingDate: '6/22/21',
    Facilitator: 'Jane Doe',
    MeetingTime: '10:00 AM',
    MeetingNotes: 'Got to know all participants.',
    TotalNumberAttending: 3,
    TotalNumberRemote: 1,
  })
  routes() {
    this.namespace = "api"
    this.get("/meetings/get", schema => {
      return schema.meetings.all()
      })
    },
  })
  return server
}

错误:

Argument of type '{ PK_Meeting: number; FamilyId: number; FamilyName: string; MeetingDate: string; Facilitator: string; MeetingTime: string; MeetingNotes: string; TotalNumberAttending: number; TotalNumberRemote: number; }' is not assignable to parameter of type 'Partial<ModelInitializer<Instantiate<Registry<AnyModels, AnyFactories>, "meeting">>>'.
  Object literal may only specify known properties, and 'PK_Meeting' does not exist in type 'Partial<ModelInitializer<Instantiate<Registry<AnyModels, AnyFactories>, "meeting">>>'.ts(2345)

Property 'meetings' does not exist on type 'Schema<Registry<AnyModels, AnyFactories>>'.ts(2339)

我的猜测是存在一种命名空间冲突,因此 Mirage 中的 Model 对象被我在其他地方的 Model 定义所掩盖。我该如何解决这个问题?在我大部分职业生涯中度过的 C# 世界中,修复它很容易。但我找不到 TS 世界的答案。有任何想法吗?

更新 0:我在 JS 项目中运行的一些测试代码很好。所以我尝试将文件更改为 JS 文件,但它仍然无法运行。我从 tsconfig.json 中排除了 JS——仍然没有乐趣。在撰写本文时,我仍在寻找答案。

4

0 回答 0