Typescript类实例用法.比起形状正确的对象,更喜欢真实的实例



我是一名Python软件工程师,也是Typescript的初学者,目前正在开发Angular应用程序。我时不时地会遇到一些惊喜,比如我对为什么以及如何使用类和实例的理解,我正在寻找经验丰富的建议。具体来说,考虑一个类:

class User {
constructor(public name: string, ...many more instance attributes);
upperCase() {return this.name.upper();}
// ...many more methods that use instance state
}

  • 确保在整个应用程序中使用的类型化对象的每个实例都是"真实"类实例,而不是只匹配"形状"的对象,这是一种好的做法吗

  • 例如,每个HTTP服务是否都应该执行以下操作:return http.get<User>.pipe(map(user => new User(user))),以便客户端能够确定他们实际处理的是什么,实例检查始终按预期执行,丢失的方法不会引发错误
  • 这是否被认为是繁琐的(可能特别是嵌套对象(?从我看过的几个项目来看,我真的没有感觉到他们太关心这个了
  • 当对象不是关于方法的"真实"实例时,静态类型检查如何正确工作
  • OO是否应该在方法和实例状态操作/功能方面保持简单,而类应该主要用于"形状检查"(我想当时被称为DTO!?(
  • 当然,时不时会有一些提示(例如,mixin的官方指南(让我怀疑,我是否应该像在其他语言中那样依赖Typescript中的类,或者只是将它们命名为DTO,并将其用作形状检查的便利,同时在类型注释函数中更程序化地实现大多数功能(这样只有形状才重要(

Typescript是结构化类型的,而不是像你习惯的那样名义上类型化的,也不是你试图回到的。

这里的最佳实践是遵循语言的哲学,不要试图与之抗争。试着习惯结构打字,过一段时间你可能也会适应这种打字方法。

最新更新