【问题标题】:Why are type variables for generics commonly declared as a single letter (e.g.: <T>)?为什么泛型的类型变量通常声明为单个字母(例如:<T>)?
【发布时间】:2019-03-30 18:55:55
【问题描述】:

对于TypeScript generics documentation 中的每个示例以及我遇到的大多数类型定义文件,类型变量都声明为单个字母,通常是&lt;T&gt;

例子:

function identity<T>(arg: T): T {
    return arg;
}

问题:

  • 为什么泛型的类型变量通常声明为单个字母?
    • 这样做的原因是什么?
    • 除了约定俗成和简洁之外,还有其他目的吗?
  • 使用更具描述性的名称有什么优缺点?

【问题讨论】:

    标签: typescript generics types static-typing typescript-generics


    【解决方案1】:

    Generics Types 的 Java 文档对此有一个非常好的段落 - 它适用于所有支持类型变量的语言:

    类型参数命名约定

    按照惯例,类型参数名称是单个大写字母。这与您已经知道的变量命名约定形成鲜明对比,并且有充分的理由:如果没有这种约定,就很难区分类型变量和普通类或接口名称。

    最常用的类型参数名称有:

    ....

    T - 类型

    基本上,您希望能够快速识别出某物是类型变量,而将类型变量命名为 T 在某些时候只是成为标准代码约定。

    Microsoft 在C++C# 上的文档也有这种约定。

    【讨论】:

    • C# guidelines 实际上推荐以 T 为前缀的描述性名称,尤其是当类型参数不止一个时;因此List&lt;T&gt;Dictionary&lt;TKey, TValue&gt;
    猜你喜欢
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多