在typescript的类型名称中,前缀T是什么意思

在typescript的类型名称中,前缀T是什么意思,typescript,flowtype,flux,Typescript,Flowtype,Flux,在类型前面加字母T似乎是一种常见的模式 下面是一个例子: 声明类ReduceStore扩展存储{ getState():TState; getInitialState():TState; 减少(状态:TState,操作:TPayload):TState; areEqual(1:TState,2:TState):布尔值; } 这是什么图案?状态类型和TState类型之间有什么区别?为什么不需要在任何地方导入或定义TState,这是一个typescript原语吗?这只是一个命名约定 为什么??类型

在类型前面加字母T似乎是一种常见的模式

下面是一个例子:

声明类ReduceStore扩展存储{
getState():TState;
getInitialState():TState;
减少(状态:TState,操作:TPayload):TState;
areEqual(1:TState,2:TState):布尔值;
}

这是什么图案?状态类型和TState类型之间有什么区别?为什么不需要在任何地方导入或定义TState,这是一个typescript原语吗?

这只是一个命名约定

为什么??类型参数在代码中是一种独特的参数(它不表示特定的类型或值,而是该上下文中某种类型的占位符),这就是为什么对于代码可读性而言,具有某种视觉上不同的命名模式非常有用的原因

在简单情况下,名称
T
用于类型参数:

interface Collection<T> {
  [index: number]: T;
}
class Component<P, S> {
  // In React `P` represents "Props" type, and `S` represents "State" type
}
class Component<TProps, TState> { }
那很好。问题是
Props
State
看起来可能是名为
Props
State
的实际具体类型,但事实并非如此。所以现在你有了一种不同的潜在困惑。最后,为了保持可读性而不丢失它们是占位符类型参数而不是特定类型的提示,请使用前缀为
T
(用于“类型参数”)的全名:

类组件{}
唯一不好的一面是较长的名称,这就是为什么您仍然会看到
T
和如此常用的名称,特别是在有经验的程序员自然会知道它代表什么的情况下,例如
Collection
非常清楚,
Collection
是不必要的,对于React开发者来说是“道具”“状态”是使用React的基础,因此
组件
将是众所周知的。不管怎样,这最终还是一种风格选择


比您可能想要的更多的信息。:)

它是一个泛型类型变量。它不涉及特定的类型。在TypeScript和C#中,它们通常都以T作为前缀,表示它们引用了一个类型。这是一个泛型类型参数。其名称在尖括号之间的声明中引入,可以是任何有效标识符。T前缀只是一些开发人员使用的约定,代表类型。此外,这是流而不是类型脚本,因此类型脚本约定实际上并不相关。感谢扩展的解释程序!
class Component<TProps, TState> { }