打字稿语法
Typescript syntax
我是 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>
在做什么吗?如果需要更多详细信息,请告诉我。
这是泛型类型参数的一个例子。
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
。
等等。您在使用接口时提供的类型参数可以是满足任何约束的任何类型 - 在您的情况下,类型参数是不受约束的。这意味着您可以重新使用接口,因为类型是稍后定义的。
我是 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>
在做什么吗?如果需要更多详细信息,请告诉我。
这是泛型类型参数的一个例子。
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
。
等等。您在使用接口时提供的类型参数可以是满足任何约束的任何类型 - 在您的情况下,类型参数是不受约束的。这意味着您可以重新使用接口,因为类型是稍后定义的。