接口(interface)的 Typescript 风格指南

标签 typescript angular

这是一个可能没有单一正确答案的问题,因为我确实意识到编码风格千差万别,尤其是在不同语言之间,例如 javascript 中的驼峰式函数名称与 C# 中的 pascal 大小写方法。我完全可以接受这一点。

也许我对此担心过度了,但我才刚刚开始研究 typescript ,非常喜欢它的外观并计划将它与 Angular2 一起使用,并希望建立一个好的风格指南。

我真正不明白的是第 2 点 here , 不要对接口(interface)使用 I 前缀。在此之前,我认为这几乎是普遍的。我有一个 Car 类,如果接口(interface)只是在前面添加一个 I,那么一个自然的名称... ICar。一看到 I 前缀,您就知道您有一个接口(interface)。

我想遵循任何建议的做法,但这个我真的不知道为什么要去做。

没有人知道为什么,我认为几乎是普遍的惯例,在这里不鼓励吗?我知道你可以使用任何你喜欢的约定,只是想知道是否有某种原因不在 Typescript 中使用这个通用约定。

提前感谢您的任何意见/信息!

最佳答案

I 作为前缀在某些时候对于 Java 和 C#(可能还有其他)来说很大,但我不认为这仍然被认为是一个好主意,但是如何改变被使用的东西大多数开发人员和现有代码库。

它类似于匈牙利符号,后者被普遍认为是不好的做法。只要给它一个有意义的名字。如果你有不同种类的 Car 而不是让 Car 成为通用接口(interface)和 class FancyCar implements Car 就自然多了。前缀之类的东西只会阻止人们思考他们真正想要表达的东西。另见 http://c2.com/cgi/wiki?IntentionRevealingNames

还有像 Dart 这样的语言(可能还有许多我不知道的其他语言)在 interfaceclass 之间没有如此明确的区别。在 Dart 中你可以实现任何类。类的接口(interface)只是作为一个interface

更新

我不是说命名很容易。事实上,我认为这是软件开发中最困难的部分,或者至少是最困难的部分。只是“精英”的普遍共识是,出于技术原因的前缀并不是最好的方法。这并不意味着存在只有优点而没有缺点的替代方案。在这种情况下,似乎使用了 UserServiceUserServiceImplMockUserService 之类的命名。这种方式在代码的大部分部分都是使用 UserService 的最自然方式,并且仅在 prividers 中派生。否则,如上所述,一致性更为重要。如果某些样式在您使用的语言中更为常见,我建议您也将其用于您的代码。

关于接口(interface)的 Typescript 风格指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35774620/

相关文章:

angular - 如何使用@input装饰器angular 2触发变化

angularjs - 转换 angular2 下的 <select>

angular - 模板中渲染数据后调用函数: Angular2

typescript - 如何使用 webpack require 和 'no-any' tslint 规则?

在 Web Worker 中导入 tensorflow 时出现 Angular typescript 类型检查问题

typescript - 在 Cypress 中创建包含断言/链命令的自定义命令

typescript - 从 Typescript 中枚举的数值创建类型

angular - 如何以 Angular 获取http响应的状态码?

css - Angular CSS样式没有改变

angular - 为什么我在 Angular 表单验证属性中需要后缀 "?"