typescript - 需要 JSON 文件并转换为接口以验证所有字段是否存在
问题描述
我正在尝试使用 读取 json 文件require()
,如果我正在读取的文件没有接口所需的所有字段,我想将其转换为一个类型并让转换失败。
这是我正在尝试的:
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 工作正常,我最终得到一个缺少键的配置对象。
如何验证 myconfig.json
是 的有效实例Config
?
解决方案
如果您的配置在运行时不是动态的。您可以使用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 的字段是否比接口中指定的字段多。
推荐阅读
- sql - oracle 12c导出dmp文件失败
- android - 如何防止使用 Path() 绘制的自定义视图在调整大小时跳转?
- angular - 银网格。更改单元格值后更改行颜色
- java - 如何为 Selenium 中遍历的每个页面设置唯一的 cookie?
- ios - 使用 AVAudioEngine 将音频从麦克风录制到文件
- react-native - React Native codePush 重启后回滚
- javascript - 查找包含数组 A 元素的数组 B 的索引
- javascript - 如何将订单总额添加到购物车?
- javascript - 另一个 .js 文件中的异步函数在返回时冻结
- python - 如何避免python中的孤儿进程多处理和子进程?