Машинопись версии 2.9+ проста в использовании. Таким образом, вы можете легко импортировать файлы JSON, как описано в @kentor .
Но если вам нужно использовать более старые версии:
Вы можете получить доступ к файлам JSON более типичным способом. Во-первых, убедитесь, что ваше новое typings.d.tsместоположение такое же, как и includeсвойство в вашем tsconfig.jsonфайле.
Если у вас нет свойства include в вашем 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/"
}
}