【发布时间】:2017-03-30 16:41:43
【问题描述】:
我正在尝试 DRY,通过使用 ES6、Typescript,我创建了一个接口,将其称为具有属性的 IUser。
- 在运行时了解对象是否符合接口的最佳方法是什么?
- 如何获取错误列表? IDE 知道缺少哪些属性,为什么我不知道?
我见过使用反射和其他技术的示例,它们一次测试一个属性。但是必须有一种方法可以轻松地知道一个对象是否实现了所有属性,如果没有实现哪些属性。
我知道有些属性是可选的 '?'而且我们知道类型,这应该是可能的!
type IUser = {
name: string
age?: number
gender: string | any
}
// Assume this object gets created at runtime.
let john = {
name: "John"
}
let errors = ValidateThis(john, IUser)
// Return something like this ["Error: Missing value gender", "Warning: Missing optional value age"]
- 我不想指定每个属性,所以必须有一种方法来迭代类型属性。
- 我不想使用我发现的任何强制我创建的现有 npm 项目,而是一个单独的架构文件或使用一个类。
【问题讨论】:
-
要在执行时执行此操作,您需要使用某种方案验证。我在另一个线程stackoverflow.com/questions/43058397/… 上回答了类似的问题,看看它是否对你有用。
标签: javascript typescript ecmascript-6