【问题标题】:How do I fix the Typescript error Unable to compile TypeScript:如何修复 Typescript 错误无法编译 TypeScript:
【发布时间】:2021-07-06 02:26:50
【问题描述】:

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

我已尽可能多地在 Google 上搜索,但没有发现任何有用的信息。该错误非常特定于某些使猫鼬玩得很好的尝试。

提前致谢。

我的模型文件:

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 中的编译错误 [订单] [错误] 11:43:04 ⨯ 无法编译 TypeScript: [orders] src/models/ticket.ts(57,5): error TS2322: Type 'Document' is notassignable to type 'Pick<_leandocument> | QuerySelector> |不明确的'。 [订单] 类型 'Document' 缺少来自类型 'Pick<_leandocument>':标题、价格、isReserved [订单]

【问题讨论】:

  • 请将错误信息粘贴为文本而不是屏幕截图。

标签: javascript node.js typescript mongoose


【解决方案1】:

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

我从here 提出了这个想法。

【讨论】:

  • 它说它只能接受一个参数,所以我尝试了以下方法并且成功了。我不知道为什么,你呢?可能想要更新您的答案,以免混淆其他人。这有效 const schema = new mongoose.Schema
猜你喜欢
  • 2017-12-11
  • 2021-04-19
  • 2021-01-15
  • 2020-07-02
  • 1970-01-01
  • 2021-11-26
  • 2019-05-20
  • 2019-09-22
  • 2017-04-02
相关资源
最近更新 更多