这里的文件结构:
在m.ts
中:
import mongoose from 'mongoose';
const {Schema} = mongoose;
export {Schema};
在a.ts
中:
import {Schema} from './m';
import mongoose from 'mongoose';
const a: Schema = new Schema({}); // Cannot find name 'Schema'
const b: mongoose.Schema = new Schema({}); // this works...
第一条语句抛出错误,提示Cannot find name 'Schema'
,而第二条语句起作用。我觉得这很奇怪。有人可以解释为什么会这样吗?
有没有一种方法我不必每次都直接从mongoose
导入?
答案 0 :(得分:0)
og:title
是一个类,不是const或函数,在typescript中,您不能将定义为const(variable)的类设置为class,这意味着您不能重命名类。
例如:
mongoose.Schema
如果要使用 const staffClass = Model.UserClass;
let emp = new staffClass(); // are you think `emp` will be a instance of `UserClass`?
// No, you do not have any class with name `staffClass` as your issue
关键字创建对象,则必须定义一个类。
new
m.ts
只需在您的命名空间中创建一个名为import mongoose from 'mongoose';
class Schema extends mongoose.Schema {
}
export {Schema}
的新类,该类就是Schema
的子类。