在打字稿中找不到名称“ Schema”

时间:2018-07-16 01:36:09

标签: typescript

这里的文件结构:

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导入?

1 个答案:

答案 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的子类。