考慮以下幾點:如何從兩個接口的聯合創建一個類型?
interface Man {
name: string
}
interface Dog {
breed: string
}
let manDog: Man | Dog;
是否有可能創建一個類型ManDog
這是Man | Dog
相當於這樣就可以做到這一點:
let manDog: ManDog;
考慮以下幾點:如何從兩個接口的聯合創建一個類型?
interface Man {
name: string
}
interface Dog {
breed: string
}
let manDog: Man | Dog;
是否有可能創建一個類型ManDog
這是Man | Dog
相當於這樣就可以做到這一點:
let manDog: ManDog;
可以使用type
關鍵字(不let
)爲您的聯合類型創建
一個新類型
別名。
https://www.typescriptlang.org/docs/handbook/advanced-types.html
interface Man {
name: string
}
interface Dog {
breed: string
}
type ManOrDog = Man | Dog;
有效地利用這些聯合類型,不要忘了對類型警衛一看,在同一個文檔的鏈接解釋。
編輯:爲什麼我用別名更換新型:
一種新型的將是另一個Interface
,你可以擴展等等。
您不能創建Interface
來擴展由type
創建的別名。
此外,錯誤消息不會顯示ManOrDog
。
在這種情況下,對於聯合類型,別名是唯一的方法。
對於交集型然而,你將有一個新型之間的選擇與
interface ManAndDog extends Man, Dog { }
和別名
type ManAndDog = Man & Dog;
你可以使用繼承來實現它
interface ManDog extends Man, Dog {}
備選地作爲這樣的類型爲具有任Man
一個或Dog
type ManDog = Man | Dog;
感謝。哪一個被認爲是最佳實踐? –
@camden_kid如果你不打算增加更多的功能,請使用選項2) –
你確定它不應該是'type ManDog = Man |犬;'? –