如何从JSON文件的属性数组中获取字符串联合类型?
从JSON文件自动生成Permission联合类型
完全可以实现,借助TypeScript的类型工具就能自动提取JSON中所有数组值作为联合类型,无需手动维护,步骤如下:
配置TypeScript支持JSON导入
先确保tsconfig.json中开启相关选项:{ "compilerOptions": { "resolveJsonModule": true, "esModuleInterop": true // 其他项目配置... } }导入JSON并提取类型
假设你的JSON文件名为permissions.json,通过以下代码自动生成目标类型:import permissions from './permissions.json'; // 提取所有对象属性对应的数组类型 type PermissionArrays = typeof permissions[keyof typeof permissions]; // 从数组类型中提取元素的联合类型 type Permission = PermissionArrays[number];此时
Permission会自动推断为'a' | 'b',后续JSON中新增任何权限值,这个类型都会同步更新。验证类型效果
可以通过代码测试类型约束是否生效:const validPerm: Permission = 'a'; // 合法 const validPerm2: Permission = 'b'; // 合法 const invalidPerm: Permission = 'c'; // 类型报错,符合预期
内容的提问来源于stack exchange,提问作者João
相关产品推荐
相关产品推荐

