打字稿语法

时间:2018-11-15 14:41:53

标签: reactjs typescript react-redux typescript-generics

我是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>在做什么吗?如果需要更多详细信息,请告诉我。

1 个答案:

答案 0 :(得分:3)

这是一个通用类型参数的示例。

interface EntityState<Entity> {
  entity?: Entity;
  status: ApiStatus;
}

接口将包含一个可选的entity?,其类型将在以后定义。目前,它被称为Entity

使用此界面时,请提供类型,即:

const stringEntity: EntityState<string>;

属性stringEntity.entity将是stringundefined(假设它是可选的)。

const numEntity: EntityState<number>;

属性numEntity.entity将是numberundefined

以此类推。使用接口时提供的type参数可以是满足任何约束的任何类型-在您的情况下,type参数不受约束。这意味着您可以重新使用接口,因为类型是在以后定义的。