【发布时间】:2020-02-13 13:51:39
【问题描述】:
在类型前加上字母 T 似乎是一种常见的模式。
这是来自some flux code的示例:
declare class ReduceStore<TPayload, TState> extends Store<TPayload> {
getState(): TState;
getInitialState(): TState;
reduce(state: TState, action: TPayload): TState;
areEqual(one: TState, two: TState): boolean;
}
这个模式有什么用? State 类型和 TState 类型有什么区别?为什么不需要在任何地方导入或定义 TState,这是 typescript 原语吗?
【问题讨论】:
-
它是一个泛型类型变量。它不涉及特定类型。在 TypeScript 和 C# 中,它们通常以 T 为前缀,表示它们引用了一个类型。
-
它是一个泛型类型参数。它的名称在尖括号之间的声明中引入,可以是任何有效的标识符。 T 前缀只是一些开发人员使用的约定,代表类型。此外,这是 Flow 而不是 TypeScript,因此 TypeScript 约定并不真正相关
标签: typescript flowtype flux