Використовувати машинопис версії 2.9 і новішої версії просто. Таким чином, ви можете легко імпортувати файли JSON у порядку, визначеному @kentor .
Але якщо вам потрібно використовувати більш старі версії:
Ви можете отримати доступ до файлів JSON більш типовим способом. По-перше, переконайтесь, що ваше нове typings.d.ts
місцезнаходження збігається із include
властивістю у вашому tsconfig.json
файлі.
Якщо у вас немає властивості включити у свій tsconfig.json
файл. Тоді структура вашої папки повинна бути такою:
- app.ts
+ node_modules/
- package.json
- tsconfig.json
- typings.d.ts
Але якщо у вас є include
власність у вашому tsconfig.json
:
{
"compilerOptions": {
},
"exclude" : [
"node_modules",
"**/*spec.ts"
], "include" : [
"src/**/*"
]
}
Тоді ви typings.d.ts
повинні бути в src
каталозі, як описано у include
властивості
+ node_modules/
- package.json
- tsconfig.json
- src/
- app.ts
- typings.d.ts
Як і у багатьох відповідях, Ви можете визначити глобальну декларацію для всіх своїх файлів JSON.
declare module '*.json' {
const value: any;
export default value;
}
але я віддаю перевагу більш типізованій версії цього. Наприклад, скажімо, у вас є такий файл конфігурації config.json
:
{
"address": "127.0.0.1",
"port" : 8080
}
Тоді ми можемо оголосити для нього певний тип:
declare module 'config.json' {
export const address: string;
export const port: number;
}
Імпортувати у файли машинопису легко:
import * as Config from 'config.json';
export class SomeClass {
public someMethod: void {
console.log(Config.address);
console.log(Config.port);
}
}
Але на етапі компіляції слід скопіювати файли JSON у папку dist вручну. Я просто додаю властивість сценарію до моєї package.json
конфігурації:
{
"name" : "some project",
"scripts": {
"build": "rm -rf dist && tsc && cp src/config.json dist/"
}
}