简体   繁体   English

在 TypeScript 中使用 koa-views

[英]Using koa-views with TypeScript

I was trying to use koa-views as my renderer, but I kept getting the message from TS:我试图使用 koa-views 作为我的渲染器,但我不断收到来自 TS 的消息:

Property 'render' does not exist on type 'ParameterizedContext<any, IRouterParamContext<any, {}>>'.ts(2339)

My app.js我的 app.js

import Koa from "Koa";
import views from "koa-views";
import indexRouter from "./routes/index"

const app = new Koa();

app.use(views(`${__dirname}/views`, { autoRender: true, extension: "swig" }));
app.use(indexRouter.routes());

index.js - IndexRouter: index.js - 索引路由器:

import Router from "koa-router";
const router = new Router();

router.get("/", async (ctx, next) => {
  ctx.render(); // not done yet tho
  await next();
})

export = router;

This is because argument ctx type doesn't have method render() , but in types lib @types/koa-views declared module (see https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/koa-views/index.d.ts#L55 ).这是因为参数ctx类型没有方法render() ,但在类型 lib @types/koa-views 中声明了模块(参见https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/koa-views /index.d.ts#L55 )。

And you can make this:你可以这样做:

import { Context, DefaultState } from "koa";
import * as Router from "koa-router";

const router = new Router<DefaultState, Context>();

router.get("/", async (ctx: Context, next) => {
    await ctx.render("/path/");
    await next();
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM