Il est facile d'utiliser la version 2.9+ dactylographiée. Ainsi, vous pouvez facilement importer des fichiers JSON comme @kentor le décrit .
Mais si vous devez utiliser des versions plus anciennes:
Vous pouvez accéder aux fichiers JSON de manière plus TypeScript. Tout d'abord, assurez-vous que votre nouvel typings.d.tsemplacement est le même que celui de la includepropriété dans votre tsconfig.jsonfichier.
Si vous n'avez pas de propriété include dans votre tsconfig.jsonfichier. Ensuite, la structure de votre dossier devrait être comme ça:
- app.ts
+ node_modules/
- package.json
- tsconfig.json
- typings.d.ts
Mais si vous avez une includepropriété dans votre tsconfig.json:
{
"compilerOptions": {
},
"exclude" : [
"node_modules",
"**/*spec.ts"
], "include" : [
"src/**/*"
]
}
Ensuite, vous typings.d.tsdevriez être dans le srcrépertoire comme décrit dans la includepropriété
+ node_modules/
- package.json
- tsconfig.json
- src/
- app.ts
- typings.d.ts
Comme dans la plupart des réponses, vous pouvez définir une déclaration globale pour tous vos fichiers JSON.
declare module '*.json' {
const value: any;
export default value;
}
mais je préfère une version plus typée de ceci. Par exemple, disons que vous avez un fichier de configuration config.jsoncomme celui-ci:
{
"address": "127.0.0.1",
"port" : 8080
}
Ensuite, nous pouvons déclarer un type spécifique pour cela:
declare module 'config.json' {
export const address: string;
export const port: number;
}
Il est facile d'importer dans vos fichiers dactylographiés:
import * as Config from 'config.json';
export class SomeClass {
public someMethod: void {
console.log(Config.address);
console.log(Config.port);
}
}
Mais en phase de compilation, vous devez copier manuellement les fichiers JSON dans votre dossier dist. Je viens d'ajouter une propriété de script à ma package.jsonconfiguration:
{
"name" : "some project",
"scripts": {
"build": "rm -rf dist && tsc && cp src/config.json dist/"
}
}