我有一个使用共享实体/文档类型的共享存储库类,看起来像这样:
type IEntity<TData extends {}, TType extends string = string> = TData & {
id: string;
type: TType;
createdAtIso: string;
}
class Repository<TData extends {}, TType extends string = string> {
constructor(private _type: TType) { }
save(data: TData): IEntity<TData, TType> {
return this._save({
id: 'asdf',
type: this._type,
createdAtIso: new Date().toISOString(),
...data
});
}
_save(entity: IEntity<TData, TType>): IEntity<TData, TType> {
// save entity here
return entity;
}
}
关键是将簿记封装在TEntity中,并且使用回购协议的代码只需要关心它具体要存储的内容即可。
也就是说,这意味着构造IEntity<TData, TType>
在存储库类中重复了无数次。在模块顶层,我可以使用type
别名为该类型创建一个较短的名称。我可以使用需要的泛型类型参数在类声明中使用任何别名作为类型的构造吗?