Tôi đã soạn thảo phiên bản mới của @types/mongoose
hỗ trợ người trợ giúp truy vấn. Xem câu trả lời này
để biết cách cài đặt @types
đã sửa đổi bưu kiện. Với phiên bản của tôi, bạn có thể viết như sau trong models/article.ts
:
import { Document, Schema, Model, model, DocumentQuery } from 'mongoose';
interface IArticle extends Document {
name: string;
}
interface IArticleModel extends Model<IArticle, typeof articleQueryHelpers> {
someStaticMethod(): Promise<any>;
}
const ArticleSchema = new Schema( { name: String } )
let articleQueryHelpers = {
byName(this: DocumentQuery<any, IArticle>, name: string) {
return this.find({ name });
}
};
ArticleSchema.query = articleQueryHelpers;
export default model<IArticle, IArticleModel>('Article', ArticleSchema);
rồi đến routes/article.ts
sẽ làm việc. Nếu điều này phù hợp với bạn, thì tôi sẽ gửi một yêu cầu kéo đến gói ban đầu trên Chắc chắnTyped.