typescript 非类型化函数调用不能接受类型参数,ts(2347)

f1tvaqid  于 2023-05-30  发布在  TypeScript
关注(0)|答案(2)|浏览(1876)

我有一个用户模式与typescript,下面是我的接口

interface IUser{
  name: string;
  email: string;
  password: string;
  isAdmin: boolean;
}

下面是用户模式

const UserSchema = new Schema<IUser>(
 {
   name: {
     type: String,
     required: true,
   },
   email: {
     type: String,
     required: true,
     unique: true,
   validate: [validator.isEmail, "Please provide a valid email"],
   },
   password: {
     type: String,
     required: true,
     minlength: 8,
   },
   isAdmin: {
     type: Boolean,
     required: true,
     default: false,
   },
 },
   {
     timestamps: true,
   }
);

const UserModel = model("User", UserSchema);

module.exports = UserModel;

我得到了typescript错误:在express和mongoose with editor visual studio中,非类型化函数调用可能不接受用户架构上的类型参数。

nfeuvbwi

nfeuvbwi1#

我假设你在这一行得到了错误:

const UserSchema = new Schema<IUser>(

就像Untyped function calls may not accept type arguments一样。

  • 它所指的type argument是通用的<...>
  • 它引用的functionSchema,这意味着它不知道Schema是什么(类型为any)。

这让我相信,要么是你导入Schema的方式有问题,要么是mongoose的类型安装方式有问题。
我建议阅读mongoose - TypeScript Support
如果你不知道哪里出了问题,那么如果你告诉我们会有帮助:

  • 如何导入Schema
  • mongoose的哪个版本(可能还有您正在使用的@types/mongoose
iugsix8n

iugsix8n2#

我也有同样的问题,在阅读了Stanislas的解决方案后,它解决了我的问题

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

interface ILink {
  discord_id: String;
  linking_code: String;
}

const LinkSchema = new Schema<ILink>({
    discord_id: {
        type: String,
        required: true,
        unique: [true, 'Discord ID name must be unique'],
    },
    linking_code: {
        type: String,
        required: true,
        unique: true,
    }
});

var Link = mongoose.model('Link', LinkSchema);
module.exports = Link;

我把导入更新到了这个

import {Schema, model} from 'mongoose';

相关问题