我正在尝试干,通过使用ES6,Typescript,我创建了一个接口,称之为具有属性的IUser。
我见过使用反射和其他技术的例子,它们一次测试一个属性。但是必须有一种方法可以很容易地知道一个对象是否实现了所有属性,如果不是,那么。
说明某些属性是可选的'?'我们知道这种类型,这应该是可能的!
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"]
答案 0 :(得分:3)
你不是第一个要求这个的人。接口在运行时不存在,因为在编译期间TS fully erases all type information。
但是,ECMAScript标准跟踪了一个反射API,并且TypeScript随身携带。完成此操作的最佳选择是使用experimentalDecoratorMetadata
自动使用类型信息装饰类,然后在运行时使用reflection API进行验证。 (Ctrl-f并搜索experimentalDecoratorMetadata
)。
答案 1 :(得分:0)
这不存在。您应该使用现有的NPM项目之一,或者写下另一个项目。