TypeScript、Vue 和 MirageJS:TS 编译错误问题
TypeScript, Vue, and MirageJS: Problems with TS compile errors
问题:我需要在 TypeScript 网络应用程序中使用 Vue 和 MirageJS,而在该网络应用程序中,出现 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 中的模型对象被其他地方的模型定义所掩盖。我该如何解决这个问题?在我大部分职业生涯中度过的 C# 世界中,它很容易修复。但是我找不到TS世界的答案。有什么想法吗?
更新 0:我 运行 在 JS 项目中的一些测试代码很好。所以我试着把文件改成JS文件,还是不行运行。我从 tsconfig.json 中排除了 JS——仍然没有快乐。在撰写本文时,我仍在寻找答案。
您可以通过编写来模拟相同的行为:
return schema.all('meetings')
问题:我需要在 TypeScript 网络应用程序中使用 Vue 和 MirageJS,而在该网络应用程序中,出现 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 中的模型对象被其他地方的模型定义所掩盖。我该如何解决这个问题?在我大部分职业生涯中度过的 C# 世界中,它很容易修复。但是我找不到TS世界的答案。有什么想法吗?
更新 0:我 运行 在 JS 项目中的一些测试代码很好。所以我试着把文件改成JS文件,还是不行运行。我从 tsconfig.json 中排除了 JS——仍然没有快乐。在撰写本文时,我仍在寻找答案。
您可以通过编写来模拟相同的行为:
return schema.all('meetings')