我正在尝试使用require()
读取json文件,并且如果我正在读取的文件不具有界面。
这就是我要尝试的:
export interface Config {
userAgent: string
refreshToken: string
clientId: string
}
export class ConfigLoader {
config: Config
constructor() {
try {
this.config = require('../config.json') as Config
} catch(ex) {
console.log(ex)
}
}
}
我的想法是,如果config.json文件没有在接口中指定所有三个键,则对Config的强制转换将失败,我可以捕获它并使用默认值或其他内容。但是require可以正常工作,而我最终得到的是缺少键的配置对象。
如何验证我的config.json
是Config
的有效实例?
答案 0 :(得分:1)
如果您的配置在运行时不是动态的。您可以使用import
而不是require来加载具有正确类型的JSON,然后针对接口进行验证:
import * as rawConfig from './config.json'
export interface Config {
userAgent: string
refreshToken: string
clientId: string
}
export const config: Config = rawConfig
要记住的一件事是,由于TypeScript是按结构键入的,因此它不会检测config.json是否具有比接口中指定的字段更多的字段。