こんな感じのjsonファイルを読み込みたい。
dummy.json
{
"foo": "foo",
"bar": 123
}
自動で型定義
typescript@^2.9.1
(2018.5.31~)からはtsconfig.json
でresolveJsonModule
とmoduleResolution
を設定すれば型の付いたJSONを直接インポートできるようになりました。
tsconfig.json
{
"compilerOptions": {
"moduleResolution": "node",
"resolveJsonModule": true
}
}
import dummy from './dummy.json'
console.log(dummy.foo);
自分で型定義
型を付けるための*.d.ts
を作ります。名前はtypes/json/index.d.ts
にしました。(なんでもいい)
そして中身はこんな感じにします。
types/json/index.d.ts
declare module '*/test-data.json' {
interface TestData {
foo: string;
bar: number;
}
const value: TestData;
export = value;
}
*/data-test.json
としてるのは./data-test.json
や../data-test.json
みたいなimport
にもマッチさせるためです。
後は、これを読み込むだけ。
import dataTest = require('./data-test.json');
別にany
で構わないならvalue: Foo
としてる部分をvalue: any
にすればOKです。