typescript - 在运行时检测所需的 TypeScript 字段
问题描述
我需要一种在运行时判断 TypeScript 接口中是否需要特定字段的方法。
它应该如下所示:
interface Person {
name: string
age?: number
occupation?: string
}
const person: Person = {
// values
}
const fields = ['name', 'age', 'occupation']
fields.map(field => {
// I'm looking for a kind of `isRequired` TypeScript util,
// that can tell, whether a field in described interface is required
if (isRequired(person, field)) {
// do this
} else {
// do that
}
})
我认为,例如,在编译时 TypeScript 创建一个必需字段的内部数组时应该是可能的。
有人实施过这个吗?
解决方案
这对于接口是不可能的,因为它们在运行时不存在。如果有的话,您可以使用metadata对类进行操作,但我不知道可选状态是否保存在默认元数据中。
如果不是这种情况,您可能已经自己注释了属性,此时您不妨手动创建所需属性的映射/数组。
推荐阅读
- java - 我的自行车 Java 程序设置有问题
- python - 如何防止写入同一个文件Python
- vb.net - 根据datagridview的选定行特定单元格值更改图片框数据
- spring-boot - Gitlab API更新存储库中的现有文件,在rest模板中给出400错误
- javascript - SetTimeout with Promise.resolve 不是输出字符串而是输出字符串的数值,为什么?
- javascript - 使用带有 inject = true 的 HtmlWebpackPlugin 不会缩小 ES6 代码
- java - 计算地图中重复键值的数量
- python - 如何将默认用户插入文件路径python
- php - 闭包表(移动子树)
- php - 如何以相同的形式包含 2 个文件上传,然后将它们插入 PHP 中的 MYSQL 数据库?