背景:在项目中需要跟go共用一个mongo,发现mongo中有部分数据类型是NumberLong。然而通过g,发现mongoose的库需要通过mongoose-long来做扩展。 问题:由于是ts,所以按照说明扩展完之后,ts的预检查还是会提示: 类型“typeof Types”上不存在属性“Long”。ts(2339)。 我理解应该是schma.types的定义里面没有这个Long的属性,所以想请教下,如何解决这个问题?
modules.ts declare module ‘mongoose-long’ { const NumberLong: Function export default NumberLong } 负责连接的文件 import NumberLong from 'mongoose-long’ NumberLong(MyMongo.mongoConn) // MyMongo.mongoConn 是已经生成的Mongoose实例 模型定义文件: ‘start_time’: { type: MongoConn.Schema.Types.Long, // 这里报错了 alias: ‘StartTime’, default: 0 },
自问自答:本质上是因为 MongoConn.Schema.Types 里面没有定义 Long,实际上 mongoose-long 已经完成了他的工作。
下午再找原因的时候看了几篇还不错的 ts 相关的文章,也推荐下: https://jkchao.github.io/typescript-book-chinese/ https://ts.xcatliu.com/basics/declaration-files