在我们的typescript项目中,有一个myDocument.model.ts
的内容:
import * as mongoose from 'mongoose';
const DocumentSchema = new mongoose.Schema({
url: String,
date: Date,
});
export default mongoose.model("Document", DocumentSchema);
在repository.ts
中有一个函数:
import Document from "./myDocument.model";
function addDocument(url:string):Document {
let newDoc = new Document();
newDoc.url = url;
newDoc.date = new Date();
newDoc.save();
return newDoc;
}
我想指定这个addDocument(..)
函数的返回类型-但不能。我将上面的导出解释为Document
是一个类似于类的type
,它可以被示例化-newDoc
示例至少有两个字段(url,date),几个额外的字段,如_id
和id
,一些示例和静态方法,如由mongoose.model(...)调用生成的save()
。所以函数返回类型应该是Document
:
public addDocument(url:string): Document {
...
return newDoc;
}
但在这种情况下,TS编译器会说
错误TS 2740:Type 'Document<unknown,{},{ url?:string; date?:Date; }> & { url?:string; date?:日期; } & { _id:“ObjectId; }”缺少类型“Document”中的以下属性:URL、alinkColor、all、anchors和250多个。
我错过了什么?
1条答案
按热度按时间ruoxqz4g1#
你犯了两个错误,即-
1.当您使用
Document
添加函数返回类型的签名时,您无意中错误地引用了浏览器中DOM中的Document。尝试将鼠标悬停在文档上,您将看到描述。1.如果您希望使用
Document
模型的示例来键入它,则需要使用IntanceType
实用程序,参数为typeof Document
。Playground link