如何扩展Koa的app,在ts下。
如题,如果使用js写koa的时候,app.xx = xx 是完全没有问题的; 但是在ts下编译器会报错,因为在定义中,koa的Application没有xx这个属性。 观察了types/koa的写法,和egg有区别,不是很懂,感觉就是定义了一个class Application,以及一个空间,而这个class引用这空间,空间内的interface是可以扩展的,而这个Application似乎没找到怎么去弄。 目前可以通过增加比如:
declare module 'koa' {
interface Context {
user: User | null;
}
}
这样来扩展ctx.user,然而没找到什么办法去扩展这个app,使得app.xx = xx在编辑器上是合法的,而且后续使用到app.xx 也会得到对应类型的提示。
3 回复
https://www.typescriptlang.org/docs/handbook/declaration-merging.html
参考ts文档 定义同名interface即可扩展已有interface。 扩展的属性不能和已有的冲突
@noe132 Application是一个class
666