here is my source codeプライベートフィールドはnullになりませんが、この方法ではnullになります、typescriptです
。コンストラクタではthis._service
はnullではありません。私は何が起こるかを知ることができ、私はそれを修正する方法を知らない。 私を助けてください!
here is my source codeプライベートフィールドはnullになりませんが、この方法ではnullになります、typescriptです
。コンストラクタではthis._service
はnullではありません。私は何が起こるかを知ることができ、私はそれを修正する方法を知らない。 私を助けてください!
Typescriptのthis
クラスオブジェクトに対して関数を実行するのではなく、関数を直接呼び出すときに処理が時々無視されることがあります。代わりにあなたのルーターに
this._controller.findById`
を渡すの
this._controller.findById.bind(this)
@Paarthおかげで先端を渡してみてください。私はstackoverflowのための新鮮な手です。私はそれがどのように動作するのかわかりませんが、私は次回に気づくでしょう。ここ は、私のコードのsameplesです:
class RepositoryBase<T extends IEnityModel> {
private _model: mongoose.Model<mongoose.Document>;
constructor(schemaModel: mongoose.Model<mongoose.Document>) {
this._model = schemaModel;
}
create(item: T, callback: (error: any, result: any) => void) {
this._model.create(item, callback);
}
retrieve(callback: (error: any, result: any) => void) {
this._model.find({}, callback)
}
update(id: string, item: T, callback: (error: any, result: any) => void) {
this._model.update({ _id: this.toObjectId(id) }, item, callback);
}
remove(id: string, callback: (error: any, result: any) => void) {
this._model.remove({ _id: this.toObjectId(id) }, (err) => callback(err, null));
}
findById(id: string, callback: (error: any, result: T) => void) {
this._model.findById(id, callback);
}
private toObjectId(id: string): mongoose.Types.ObjectId {
return new mongoose.Types.ObjectId(id)
}
}
あなたは_modelがプライベートであり、CategoryRepositoryクラスはRepositoryBaseを拡張し、何とか私はCategoryRepositoryでアクセス_modelをしたいので、私が保護にプライベートに変更、それ見ることができるよう次のようなエラーが発生します。 typescript protected error info
それは私にとってとても奇妙です。
ありがとうございました。しかし、私には別の問題があります。プライベート_serviceをprotectedに変更すると、予期しないトークンなどのエラーが発生します。 'コンストラクタ、関数、アクセサまたは変数' なぜプライベートかパブリックは大丈夫か、保護されていないのですか? –
@jeffreychan前と後で試していることのコードサンプルを表示できますか? Stack Overflowの方針に沿うためには、新しい質問として投稿し、コードサンプルをリンクするのではなくテキストに含めることをお勧めします。あなたがそれを作った後のコメントで、その質問に自由にリンクしてください。 – Paarth