将接口编写为泛型

时间:2017-07-14 19:25:30

标签: typescript

例如,我有以下界面

export interface IUserCredentials {
  email: string;
  password: string;
}

我知道我会将这个和许多其他数据类型存储在数据库中,在这些数据库中,他们将被分配iddateCreated和{{1} }

我不想为每一个dateModified编写一个接口,而是想一次性写出来,比如:

IDBRecord

当然,这是不可能的,因为我无法在界面定义之外引用泛型类型。

有人能想到办法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用类型(此处为交集类型):

type DBRecord<T> = T & {
  id: number;
  dateCreated: Date
  dateModified: Date
}

export interface IUserCredentials {
  email: string;
  password: string;
}

function foo(entity: DBRecord<IUserCredentials>) {
    ...
}

演示:typescript playground example

供参考,请参阅advanced types in typescript