Closed wanghsinche closed 6 years ago
这个问题目前我想到的最简单的办法就是在 index.d.ts
中的 declare class MongoDB
中增加一个 public get(name: string): MongoDB
方法。
这样声明和 MongoDB
类的实现是不一致的,但是暂时没找到更好的办法。
感觉可以参考 egg-mongoose的做法, 开了个pull request #20
Union Types 的问题是每次 app.mongo
都需要指定类型(as
或尖括号),比较麻烦。
你可以在本地修改后试一下。
嗯,要不再推荐用户在ctx上extend一个方法,getMongo() 返回自己需要的类型,这样就不用每次都指定类型或者尖括号了。 我目前就是extend一个method 用 app.mongo as any as Map<string, Mongo>强制转为map。
尽量不给用户增加额外工作量。
增加一个新类型 MongoDBSingleton
暂时解决这个问题。Egg 的设计机制注定了没法在 index.d.ts
里完美解决。
当config.js 配置为
时,app.mongo理应为Map<string, Mongo>,而node_modules中的index.d.ts已经定义为Mongo。导致ts一直无法通过。即使在app的index.d.ts覆盖app.mongo的定义也不生效。