型定義ファイル .d.ts を用いる際に、tsc コマンドは通るけれど ts-node で実行するとエラーが出る時

現象

tsc を実行した場合

$ tsc
(問題なし)
$

ts-node を実行した場合

$ ts-node apps/twitter.ts
/home/USERNAME/.nodenv/versions/16.14.2/lib/node_modules/ts-node/src/index.ts:820
    return new TSError(diagnosticText, diagnosticCodes);
           ^
TSError: ⨯ Unable to compile TypeScript:
apps/twitter.ts:27:31 - error TS2304: Cannot find name 'Tweet'.

結論

tsconfig.json"ts-node" プロパティを以下のように追加する。

{
  "compilerOptions": {
    "target": "es2021",
    (省略)
  },
  "ts-node": {
    "files": true
  }
}

補足

ts-node コマンドに --files オプションを付けて実行する*1、という手法もありますが、tsconfig.json に書いておくと楽です。

*1:そしてそれを package.json の scripts に追加する

Powered by はてなブログ