ここで、TypeScript newbieは既存のプロジェクトを移行します。 、私はこれらの@types定義を使用していTypeScript:型の引数を代入することができません。
src/models/task.ts(12,3): error TS2345: Argument of type '{ discriminatorKey: string; }' is not assignable to parameter of type 'SchemaOptions'.
Object literal may only specify known properties, and 'discriminatorKey' does not exist in type 'SchemaOptions'.
:これは私のコンパイル中に次のエラーを与える
const task = new mongoose.Schema({
name: {
type: String
},
notes: {
type: String
}
}, {
discriminatorKey: 'type',
toObject: {
virtuals: true
},
toJSON: {
virtuals: true
}
});
:私たちは、次のコードに似た外観とdiscriminatorKey
プロパティを使用マングースモデルを、持っています最も最近のものであるように思われた:
"@types/mongoose": "^4.7.8"
私は理解して、型定義がdiscriminatorKey
を指定していないこと(これはobviou私が理解していないのはなぜですか(監視していますか?別のバージョン?他の理由?)、(b)どうすればこのエラーを回避できますか?
(c)ボーナスに関する質問:@types
の定義のバージョン管理戦略はまだ私には不明です。タイプ定義は実際のライブラリのバージョンと一致する必要がありますが、しばしば一致するバージョンがないように思われます。我々はexpress
バージョンを使用しています。 4.13.4となりますが、一致する@types/express
バージョンはありません。この場合、ベストプラクティスは何ですか?
リテラルは、*超過プロパティチェック*の対象となります。このページで用語を検索してください:https://www.typescriptlang.org/docs/handbook/interfaces.html – cartant