2017-07-14 61 views
0

例如延期,我有以下接口寫一個接口的通用

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

我知道我會被存儲這和許多其他數據類型的數據庫裏面,他們會分配一個id,一個dateCreateddateModified

而不是寫每一個IDBRecord的接口,我想這一切在一次寫類似:

interface DBRecord<Data> extends Data { 
    id: number; 
    dateCreated: Date 
    dateModified: Date 
} 

當然,這是不可能的,因爲我不能在接口定義之外引用泛型類型。

任何人都可以想辦法做到這一點?

回答

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

+0

呃...... 我發誓我試過...... – pixelpax