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.ts
emplacement est le même que celui de la include
propriété dans votre tsconfig.json
fichier.
Si vous n'avez pas de propriété include dans votre tsconfig.json
fichier. 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 include
propriété dans votre tsconfig.json
:
{
"compilerOptions": {
},
"exclude" : [
"node_modules",
"**/*spec.ts"
], "include" : [
"src/**/*"
]
}
Ensuite, vous typings.d.ts
devriez être dans le src
répertoire comme décrit dans la include
proprié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.json
comme 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.json
configuration:
{
"name" : "some project",
"scripts": {
"build": "rm -rf dist && tsc && cp src/config.json dist/"
}
}