2016-07-17 6 views
1

Repository Patternを利用している間、TypoScriptでNodeJSにMongoose 4.5.4とit's typingsを使用しようとしています。NodeJSのMongooseとTypescriptで基底クラスを拡張できません

RepositoryBase:

export class RepositoryBase<T extends mongoose.Document> implements IRead<T>, IWrite<T> { 
    private _model: mongoose.Model<mongoose.Document>; 

    constructor(schemaModel: mongoose.Model<mongoose.Document>) { 
     this._model = schemaModel; 
    } 

    create(item: T): mongoose.Promise<mongoose.model<T>> { 
     return this._model.create(item); 
    } 

    //...... 
    //Additional CRUD methods excluded for brevity 
} 

UserRepository:

export class UserRepository extends RepositoryBase<IUserModel> { 
    constructor() { 
     super(UserSchema); 
    } 
} 

私はUserRepository

[ts] Argument of type '<U>(name: string) => IModelConstructor<U> & EventEmitter' is not assignable to parameter of type 'IModelConstructor<Document> & EventEmitter'. Type '<U>(name: string) => IModelConstructor<U> & EventEmitter' is not assignable to type 'IModelConstructor<Document>'. Property 'findById' is missing in type '<U>(name: string) => IModelConstructor<U> & EventEmitter'. import UserSchema

からsuper()への呼び出しに、次のタイプのエラーを持っている誰もがなぜ知っていますか?私のモデル(UserSchema)の私の作成は非常に簡単です: let model = mongooseConnection.model<IUserModel>("Users", UserSchema.schema);

は、私は非常に正しい方向にプッシュをいただければ幸いです。

+0

ここに2つの解決策があります:https://stackoverflow.com/questions/34482136/mongoose-the-typescriptway(免責事項:いずれかが私のものです) –

答えて

1

シンプルにすることで、このタイピングの問題を解決するのに十分でした。export const model = mongooseConnection.model<IUserModel>("Users", UserSchema.schema);

関連する問題