例如,我有以下界面
export interface IUserCredentials {
email: string;
password: string;
}
我知道我将把这个和许多其他数据类型存储在一个数据库中,在那里它们将被分配一个id
, adateCreated
和 adateModified
IDBRecord
我不想为每个单独编写一个接口,而是想一次编写所有内容,例如:
interface DBRecord<Data> extends Data {
id: number;
dateCreated: Date
dateModified: Date
}
当然,这是不可能的,因为我不能在接口定义之外引用泛型类型。
谁能想到一种方法来做到这一点?
您可以改用类型(此处为交集类型):
type DBRecord<T> = T & {
id: number;
dateCreated: Date
dateModified: Date
}
export interface IUserCredentials {
email: string;
password: string;
}
function foo(entity: DBRecord<IUserCredentials>) {
...
}
演示:打字稿游乐场示例
作为参考,请参阅typescript 中的高级类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句