为什么泛型的类型变量通常声明为单个字母(例如:<T>)?

Wil*_*art 5 generics types static-typing typescript typescript-generics

对于TypeScript 泛型文档和我遇到的大多数类型定义文件中的每个示例,类型变量都声明为单个字母,通常是<T>.

例子:

function identity<T>(arg: T): T {
    return arg;
}
Run Code Online (Sandbox Code Playgroud)

问题:

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

Dan*_*iel 5

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

类型参数命名约定

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

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

....

T - 类型

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

微软关于C++C#的文档也有这个约定。

  • [C# 指南](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/generic-type-parameters#type-parameter-naming-guidelines) 实际上建议使用前缀为的描述性名称T,尤其是当有多个类型参数时;因此`List&lt;T&gt;`而是`Dictionary&lt;TKey, TValue&gt;`。 (3认同)