【发布时间】:2021-02-10 04:15:01
【问题描述】:
我尝试了很多不同的工具和框架,我想使用一些东西。真正用 Nodejs 和 Typescript 严格输入,但似乎什么都不是?
例如路由系统:
我尝试过 Meteor 和 NestJS 之类的框架,这些框架真的很难扩展,如果缺少某个功能,你将永远无法在保持所有类型的同时在其之上开发一些东西。
我已经掌握了 Nuxt、Next 和 Sapper 等框架。但是没有真正输入,或者以一种奇怪的方式输入。
所以我选择了 Express JS,我可以输入自己的路线并编写自己的方法和类来扩展它。这比我以前尝试过的任何其他方法都容易。
但路由系统只是工作 API 的一部分。现在我需要将我的路线与我的数据库链接起来,当然,我需要随身携带一个 ORM。但是事件 TypeORM 或 Sequelize-Typescript 并不是真正类型化的。 sequelize-typescript 中的某些方法(例如“User.create({//Not typed})”)不提供自定义类型来帮助我填充此方法。
而在ORM之后,就轮到认证、数据输入,甚至是客户端了。
Typescript 很棒,但是所有“使用 typescript”的东西仍然会有一些动态数据层,需要在编写代码时手动检查。
你如何处理这个?当您制作应用程序时,您是否总是在辅助屏幕中检查您的类型和接口?当您需要在界面中添加新字段时,您如何跟踪使用它的应用程序的每个部分(路由、客户端、数据库、验证)?
我只是不想开始编写我的 API,却发现它很难修改、改进或调试(我可能会有超过 25 个实体,它们之间有超过 100 个关系)。
【问题讨论】:
-
...总是需要处理杂乱、稀疏、不规则的数据。您将必须始终对其进行规范化。您将不得不经常处理第 3 方 API,这些 API 可能会或可能不会分享您对什么构成安全性、API 合同意味着什么、或者是否在数据结构中添加密钥是/应该算作突破性的变化。话虽如此,这是一个意见问题,并不适合 SO。
-
TypeScript 不是运行时类型系统。它是一个开发时实用程序,用于提醒您对象模式和函数签名。当您的代码运行时,它就是 PURE JS。请记住,TypeScript 是一种“可擦除”语法,这意味着它会在您编译代码时消失。
-
也就是说,我已经开始使用并享受这个库来检查对象(例如我在 API 调用中收到的请求负载)是否与预期的接口匹配。 npmjs.com/package/typescript-is
标签: node.js typescript api rest