eggjs ts下使用extend的context
时间: 2024-05-16 22:17:35 浏览: 66
在 Egg.js 中,我们可以通过 `app` 对象的 `context` 属性来扩展应用的上下文,例如添加一些自定义的方法或属性。在 TypeScript 中,我们可以通过定义一个接口来扩展 `Context` 类型,然后在 `app` 对象的 `extendContext()` 方法中使用该接口来扩展应用的上下文。
以下是一个示例:
```typescript
// 定义扩展的接口
interface MyContext {
foo(): void;
}
// 在 app.ts 中扩展应用的上下文
import { Application } from 'egg';
export default (app: Application) => {
app.extendContext<MyContext>({
foo() {
console.log('Hello, world!');
},
});
};
```
然后,在控制器或中间件中,我们就可以通过 `ctx` 对象来调用 `foo()` 方法了:
```typescript
// 在控制器或中间件中使用扩展的方法
export default class HomeController extends Controller {
async index() {
const { ctx } = this;
ctx.foo(); // 输出 "Hello, world!"
}
}
```
相关问题
eggjs ts下使用extend-context
在 Egg.js 中使用 TypeScript 时,可以使用 `extend-context` 扩展上下文对象。
首先,在 `typings/app/extend/context.d.ts` 文件中定义扩展的方法,例如:
```typescript
import { Context } from 'egg';
declare module 'egg' {
interface Context {
myMethod(): string;
}
}
```
然后,在 `app/extend/context.ts` 文件中实现扩展的方法,例如:
```typescript
import { Context } from 'egg';
export default {
myMethod(this: Context) {
return 'Hello World';
}
};
```
最后,在 Controller 中使用扩展的方法:
```typescript
export default class HomeController extends Controller {
async index() {
const { ctx } = this;
const result = ctx.myMethod();
ctx.body = result;
}
}
```
这样,就可以在 TypeScript 的项目中使用 `extend-context` 扩展上下文对象了。
阅读全文