プラグインfastify-staticでfastifyを使用しています。また、このプラグインの独自の TypeScript 型宣言を で提供します。typings/fastify-static/index.d.ts
declare module "fastify-static" {
import { Plugin } from "fastify";
import { Server, IncomingMessage, ServerResponse } from "http";
namespace fastifyStatic {
const instance: Plugin<Server, IncomingMessage, ServerResponse, any>;
}
export = fastifyStatic.instance
}
さらに、プラグインはメソッドで fastifyFastifyReply
を拡張しsendFile
ます。
次のようにモジュール スコープで fastify モジュールを拡張すると、正常に動作します。
// server.js
import fastify from "fastify";
import fastifyStatic from "fastify-static";
declare module "fastify" {
interface FastifyReply<HttpResponse> {
sendFile: (file: string) => FastifyReply<HttpResponse>
}
}
server.get("/file", async (request, reply) => {
reply.sendFile('file')
});
残念ながら、このモジュールでのみ機能します。宣言を移動するtypings/fastify-static/index.d.ts
かtypings/fastify/index.d.ts
、拡張の代わりにモジュールをオーバーライドすると。
プロジェクト スコープでモジュールを拡張するにはどうすればよいですか?fastify