繁体   English   中英

如何修复 Typescript 错误无法编译 TypeScript:

[英]How do I fix the Typescript error Unable to compile TypeScript:

我无法弄清楚我收到错误的原因。 我不是 Typescript 忍者,所以对于这里的某个人来说,这个错误可能很明显。 我的项目正在使用 Kubernetes 运行微服务,当我运行项目时,其中一项服务抛出以下错误。

我已经尽可能多地在 Google 上搜索,但没有发现任何帮助。 该错误非常特定于使 mongoose 发挥良好的一些尝试。

提前致谢。

我的 model 文件:

import mongoose from 'mongoose';

import { Order, OrderStatus } from './order';

interface TicketAttrs {
  id: string;
  price: number;
  title: string;
}

export interface TicketDoc extends mongoose.Document {
  id: string;
  title: string;
  price: number;
  isReserved(): Promise<boolean>;
}

interface TicketModel extends mongoose.Model<TicketDoc> {
  build(attrs: TicketAttrs): TicketDoc;
}

const schema = new mongoose.Schema({
  title: {
    type: String,
    required: true
  },
  price: {
    type: Number,
    required: true,
    min: 0
  }
}, {
  toJSON: {
    transform(doc, ret) {
      ret.id = ret._id;
      delete ret._id;
    }
  }
});

schema.statics.build = (attrs: TicketAttrs) => {
  return new Ticket({
    _id: attrs.id,
    price: attrs.price,
    title: attrs.title
  });
};

/**
 * Queries the orders to determine if a ticket is currently 
 * reserved.
 * 
 * @returns boolean
 */
schema.methods.isReserved = async function() {
  const existingOrder = await Order.findOne({
    ticket: this,
    status: {
      $in: [
        OrderStatus.Created,
        OrderStatus.AwaitingPayment,
        OrderStatus.Complete
      ]
    }
  });

  return !!existingOrder;
};

const Ticket = mongoose.model<TicketDoc, TicketModel>('Ticket', schema);

export { Ticket };

错误:

在此处输入图像描述

[orders] /app/src/models/ticket.ts 中的编译错误 [orders] [ERROR] 11:43:04 ⨯ 无法编译 TypeScript:[orders] src/models/ticket.ts(57,5):错误TS2322:类型 'Document<any, {}>' 不可分配给类型 'Pick<_LeanDocument, "id" | "_id" | "__v" | “标题” | “价格” | "已保留"> | QuerySelector<Pick<_LeanDocument, "id" |... 4 更多... | "已保留">> | 不明确的'。 [订单] 类型 'Document<any, {}>' 缺少来自类型 'Pick<_LeanDocument, "id" | 的以下属性 "_id" | "__v" | “标题” | “价格” | "isReserved">':标题、价格、isReserved [订单]

Schema 是一个通用构造函数,所以试试这个: new mongoose.Schema<TicketDoc>({...})

我从这里提出了这个想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM