我是TypeScript的新手,正在使用公司大量使用它的公司回购协议之一。 (我们正在构建一个React / Redux应用程序。)我熟悉TypeScript泛型的基本概念,但是语法上有一点点令人困惑。这是有问题的代码的示例(在简化程序中):
interface EntityState<Entity> {
entity?: Entity;
status: ApiStatus; // enum
}
interface FieldSummary {
dataType?: string;
// other properties...
}
function singleField(state: EntityState<FieldSummary> = defaultEntityState,
action: ActionTypes) {...}
有人可以解释EntityState<FieldSummary>
在做什么吗?如果需要更多详细信息,请告诉我。
答案 0 :(得分:3)
这是一个通用类型参数的示例。
interface EntityState<Entity> {
entity?: Entity;
status: ApiStatus;
}
接口将包含一个可选的entity?
,其类型将在以后定义。目前,它被称为Entity
。
使用此界面时,请提供类型,即:
const stringEntity: EntityState<string>;
属性stringEntity.entity
将是string
或undefined
(假设它是可选的)。
const numEntity: EntityState<number>;
属性numEntity.entity
将是number
或undefined
。
以此类推。使用接口时提供的type参数可以是满足任何约束的任何类型-在您的情况下,type参数不受约束。这意味着您可以重新使用接口,因为类型是在以后定义的。