具体的には、私はexpressのためのサーバ側のtypescriptコンパイルを設定しようとしています。TypeScriptでは、(a:type、b:type):anyのインターフェイスを実装するにはどうすればいいですか?
曝さインターフェイスの1つが、以下の構造を持つのRequestHandler、次のとおりです。
// express-serve-static-core/index.d.ts
declare module "express-serve-static-core" {
...
interface RequestHandler {
(req: Request, res: Response, next: NextFunction): any;
}
}
私は以下のクラスを書いた:
import * as express from "express";
class PageNotFound implements express.RequestHandler {
constructor (req: express.Request, res: express.Response, next: express.NextFunction) {
let viewFilePath: string = "404";
let statusCode: number = 404;
let result: Object = {
status: statusCode,
};
res.status(statusCode);
res.render(viewFilePath, {}, function (err: Error, html: string): void {
if (err) {
res.status(statusCode).json(result);
}
res.send(html);
});
}
}
はしかし、これはエラーをスローします。
error TS2345: Argument of type 'typeof PageNotFound' is not assignable to parameter of type 'RequestHandler'. Type 'typeof PageNotFound' provides no match for the signature '(req: Request, res: Response, next: NextFunction): any'
何か提案がありますか?私は何が間違っているのか分かりません。
これは正しいです。また、型定義 ':void'と' 'strict strict ';'を追加しました。これは、tslintが不平を言うためです。ありがとう、アラン! – Alexander