39
A
回答
58
接口可擴展
interface A {
x: number;
}
interface B extends A {
y: string;
}
也增強
interface C {
m: boolean;
}
// ... later ...
interface C {
n: number;
}
類型別名,但是,可以代表一些東西接口不能
type NumOrStr = number | string;
type NeatAndCool = Neat & Cool;
type JustSomeOtherName = SomeType;
所以一般情況下,如果你只是一個普通的對象類型,如你的問題所示,一個接口通常是一個更好的方法。如果你發現自己想寫一些不能寫成接口的東西,或者想給一些不同的名稱,那麼類型別名會更好。
+2
'然而,類型別名可以表示一些接口無法接口的東西在我看來,您的示例'NeatAndCool'和'JustSomeOtherName'可以創建爲擴展現有的'Neat','Cool'或'SomeType'類型的接口。 –
3
4
0
類型有點像接口,反之亦然:兩者都可以通過一個類實現。 但有一些重要的區別: 1.當Type由類實現時,屬於Type的屬性必須在類內初始化,而使用Interface時必須聲明它們。 2. as @ryan提到:接口可以擴展另一個接口。類型不能。
type Person = {
name:string;
age:number;
}
// must initialize all props - unlike interface
class Manager implements Person {
name: string = 'John';
age: number = 55;
// can add props and methods
size:string = 'm';
}
const jane : Person = {
name :'Jane',
age:46,
// cannot add more proprs or methods
//size:'s'
}
相關問題
- 1. TypeScript中的「聲明類」和「接口」有什麼區別
- 2. Typescript中var和let有什麼區別?
- 3. 在方法和類中使用泛型和接口有什麼區別
- 4. Objective-c中的類和類接口有什麼區別?
- 5. IComparable和IEquatable接口有什麼區別?
- 6. TypeScript在接口和類中處理多餘屬性的區別
- 7. Typescript Union類型和接口
- 8. oEmbed中的鏈接和豐富類型有什麼區別?
- 9. pg_hba.conf中的「local」和「localhost」連接類型有什麼區別?
- 10. Cython中numpy「類型標識符」和「類型」有什麼區別?
- 11. Haskell中的類型和數據類型有什麼區別?
- 12. Typescript中的接口和類之間的區別
- 13. 泛型類型和泛型類型定義有什麼區別?
- 14. 抽象類和接口之間有什麼區別?
- 15. 使用類和接口有什麼區別?
- 16. 模擬類和接口之間有什麼區別?
- 17. MySQL中的套接字和端口連接有什麼區別?
- 18. 「流類型」套接字和「數據報」套接字類型有什麼區別?
- 19. 指針和值接收器類型有什麼區別?
- 20. 在TypeScript中函數和=>有什麼區別?
- 21. 在angularjs中textarea和輸入類型文本有什麼區別
- 22. 在oracle中嵌套表和對象類型有什麼區別?
- 23. 選項類型和可空類型有什麼區別?
- 24. 有什麼區別擴展類型和類型
- 25. ASN.1枚舉類型和選擇類型有什麼區別?
- 26. 兩種(類型)值和類型(值)有什麼區別?
- 27. 潛類型和Manifest類型有什麼區別?
- 28. 複合類型和匿名類型有什麼區別?
- 29. 類型1和類型2模糊邏輯有什麼區別?
- 30. C++「類型推導」和Haskell「類型推論」有什麼區別?
類型不能像接口擴展那樣擴展。類型只是一個類型的別名。 – PSL
Guidance at here:https://basarat.gitbooks.io/typescript/content/docs/types/type-system.html#type-alias – basarat
我主要使用外部數據的類型,例如來自JSON文件,或者如果你只寫函數而不使用OOP類。 – Kokodoko