gpt4 book ai didi

javascript - 如何使用 TypeScript 实现对象验证?

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:33 27 4
gpt4 key购买 nike

我有一个 Express API 服务器应用程序和一个 React 客户端应用程序,它们都是用 TypeScript 实现的。我使用 TypeScript 接口(interface)定义了我的数据模型,并且我在系统的两端都使用了这些接口(interface)。但是,TypeScript 接口(interface)只是编译时特性,我还需要运行时类型检查,例如验证 HTTP POST 数据 (json) 是否符合定义的数据结构。

所以我的问题是,我如何/应该如何利用 TypeScript 提供的功能来实现运行时对象验证?

最佳答案

我创建了一个名为 Smoke Screen 的超轻量级库正是这样做的。它利用 typescript 功能在 javascript 运行时执行任何类型的对象验证。它不是 100% 无缝的,因为 javascript 在运行时不保存任何类型信息,但多亏了 TypeScript 装饰器,这可以很容易地完成:

class Person {

@exposed({type: Number})
age: number;

}

// serialize a Person object into a JSON string
const person = new Person();
person.age = 56.8;
const smokeScreen = new SmokeScreen();
smokeScreen.toJSON(person); // -> '{"age":56.8}'

// deserialize a JSON string into a Person object
let json = JSON.stringify({age: 19});
const person2 = smokeScreen.fromJSON(json, Person);
console.log(person2); // -> Person { age: 19 }

// typing validation
json = JSON.stringify({age: "oops"});
smokeScreen.fromJSON(json, Person); // Error: illegal input - property 'age' must be a number

可以设置其他自定义验证器,还支持和强制执行可选参数和空检查。我建议阅读更多相关信息并尝试一下。

关于javascript - 如何使用 TypeScript 实现对象验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44297397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com