const fastify = require("fastify");
const { fastify } = require("fastify");
import fastify = require("fastify"); // ts에서만 됨?
import * as Fastify from "fastify";
import { fastify, FastifyInstance } from "fastify";
import fastify from "fastify";
import fastify, { FastifyInstance } from "fastify";

위의 import 소스들을 모두 대응하기 위해서는 아래와 같이 export 해야한다.

class FastifyInstance {}

function fastify() {
  return new FastifyInstance();
}

fastify.FastifyInstance = FastifyInstance;

// Allows for { fastify }
fastify.fastify = fastify;
// Allows for strict ES Module support
fastify.default = fastify;
// Sets the default export
// for js(이 소스가): 타입스크립트에서 import 하기 위해서는 .d.ts 파일 작성해야함
module.exports = fastify;

// for ts(이 소스가. 그렇지않으면 모듈로 인식 안됨): 이 소스에서 타입 정해줘야함
export { FastifyInstance, fastify }
export default fastify