TypeScript:“文档”类型上不存在属性“slug”

Posted

技术标签:

【中文标题】TypeScript:“文档”类型上不存在属性“slug”【英文标题】:TypeScript: Property 'slug' does not exist on type 'Document' 【发布时间】:2020-03-06 12:51:34 【问题描述】:

我有以下 Mongoose 模型架构。我正在使用打字稿文件。

// Core Modules

// NPM Modules
import mongoose from "mongoose";
import slugify from "slugify";

// Custom Modules
const CategorySchema = new mongoose.Schema(
  name: 
    type: String,
    required: [true, "Please add a Category Name"],
    unique: true,
    trim: true
  ,
  slug: 
    type: String,
    unique: true
  ,
  description: 
    type: String,
    required: [true, "Please add a description"],
    maxlength: [500, "Description can not be more than 500 characters"]
  
);

// Create bootcamp slug from the name
CategorySchema.pre("save", function(next) 
  this.slug = slugify(this.name,  lower: true );
  next();
);

module.exports = mongoose.model("Category", CategorySchema);

我收到以下错误

“文档”类型上不存在任何属性“slug”.ts(2339)

“文档”类型上不存在任何属性“名称”.ts(2339)

【问题讨论】:

【参考方案1】:

您是否为您的架构创建了接口?

我会这样做:

export interface ICategory extends mongoose.Document 
name: string;
slug: string;
description: string;

然后你可以这样做:

CategorySchema.pre<ICategory>("save", function(next) 
  this.slug = slugify(this.name,  lower: true );
  next();
);

应该可以的。

【讨论】:

以上是关于TypeScript:“文档”类型上不存在属性“slug”的主要内容,如果未能解决你的问题,请参考以下文章

类型“文档<any>”上不存在属性“密码”

TypeScript:类型“”上不存在属性

打字稿和猫鼬:“文档”类型上不存在属性“x”

类型“”上不存在 Typescript 错误属性“成员”

TypeScript - 类型上不存在属性(但存在)?

“EventTarget”类型上不存在属性“值”