質問: new base.Foo(); // ReferenceError: base is not defined test("someMethod", () => { expect(foo.answerToTheUltimateQuestion()).toBe(42); }); ``` モジュール形式に書き直すのが一番良いとはわかっているのですが、ファイル数が多く、 変更しづらい状況なため、どうにかしてまずテストで 壊れてもわかる状況を確保してから書き直していきたいのです。 d.tsファイル、tsconfig.jsonのtarget以外の変更、あるいは他の手段で解決することはできるのでしょうか?
回答: 本家のstackoverflowに同様の質問がありました。ただし、本家の質問は解決にいたっていません。 How would I test Typescript code that uses namespaces in Node.js? ただその中で、TypeScriptの`--outFile` オプションを使う方式が紹介されていました。 以下のようにテストコードに`/// `で依存関係のあるファイルパスを記載し、 `outFile`オプションに`main.test.js`などと指定して、 テストコードと依存コードを1つまとめれば、テストコードの修正と、 ビルドツールの工夫だけで対応できるかもしれません。 ``` // __tests__/main.test.ts /// /// const foo = new base.Foo(); // ReferenceError: base is not defined test("someMethod", () => { expect(foo.answerToTheUltimateQuestion()).toBe(42); }); ```