2017-02-21 79 views
1

我可能在想這個。基本上,我想有一個非泛型接口,它實現了一些屬性,然後創建第二個類型,用它自己的泛型屬性實現該接口。使用通用接口擴展非通用接口

interface Car { 
    model: string; 
} 

interface Car<T> extends Car { 
    transmission: T; 
} 

打字稿錯誤:

「所有的 '車' 必須具有相同類型參數的聲明。」

我可以找到的唯一方法是命名不同的非通用接口,如CarBase。建議?

+0

你到底想幹什麼?爲什麼要將它分成兩個具有相同名稱的不同界面?它相當於接口Car {model:string;傳輸:T}' –

+0

我希望其他代碼使用非通用引用。 Currenly在做汽車繞過類型檢查,當我只想使用汽車。 – cgatian

+0

爲什麼他們必須有相同的名字? –

回答

1

可以使用type alias,以節省您寫Car<any>的麻煩:

interface Car<T> { 
    model: string; 
    transmission: T; 
} 

type AnyCar = Car<any>; 
+0

這是否就像寫作: '接口CarBase實現汽車'? – cgatian

+1

這幾乎是一樣的,但接口和類型別名之間存在差異。它在[Interfaces vs. Type Aliases]中有解釋(https://www.typescriptlang.org/docs/handbook/advanced-types.html#interfaces-vs-type-aliases) –