17
A
回答
18
基本上,這意味着界面在「鴨子打字」的基礎上進行比較,而不是基於類型識別的基礎。
考慮下面的C#代碼:
interface X1 { string Name { get; } }
interface X2 { string Name { get; } }
// ... later
X1 a = null;
X2 b = a; // Compile error! X1 and X2 are not compatible
以及等效打字稿代碼:
interface X1 { name: string; }
interface X2 { name: string; }
var a: X1 = null;
var b: X2 = a; // OK: X1 and X2 have the same members, so they are compatible
該規範並沒有很詳細地掩蓋這一點,但類有「品牌」,這意味着相同的代碼,寫入類而不是接口,會有錯誤。 C#接口確實有品牌,因此不能隱式轉換。
想想最簡單的方法是,如果您嘗試從接口X到接口Y的轉換,如果X包含Y的所有成員,則轉換成功,即使X和Y可能不一樣名。
1
想一想。
class Employee { fire: = ..., otherMethod: = ...}
class Missile { fire: = ..., yetMoreMethod: = ...}
interface ICanFire { fire: = ...}
val e = new Employee
val m = new Missile
ICanFire bigGuy = if(util.Random.nextBoolean) e else m
bigGuy.fire
如果我們說:
interface IButtonEvent { fire: = ...}
interface IMouseButtonEvent { fire: = ...}
...
打字稿將允許這一點,C#不會。
由於TypeScript旨在與使用「寬鬆」打字的DOM良好協作,因此它是打字稿唯一明智的選擇。
我把它留給讀者來決定他們是否喜歡「結構性輸入」 ... ..
相關問題
- 1. 打字稿接口
- 2. 這是什麼打字稿接口語法是什麼意思?
- 3. 什麼是打字稿再出口?
- 4. 接口的打字稿
- 5. 什麼是打字稿
- 6. 什麼是打字稿?
- 7. 與擴散構件打字稿接口
- 8. 打字稿接口[] VS [Inferface]
- 9. 打字稿:轉換接口
- 10. 打字稿類和接口
- 11. 在打字稿接口
- 12. 接口在打字稿
- 13. 什麼是類型的打字稿
- 14. 什麼是打字稿中的...語法
- 15. 什麼是從打字稿中的接口創建對象的最佳方式
- 16. 結合對象打字稿
- 17. 更安全的打字稿 - 什麼是正常的打字稿的差異
- 18. 打字稿:映射的鍵:值結構
- 19. 爲什麼打字稿
- 20. 打字稿構造
- 21. 出口的打字稿
- 22. 打字稿不知道FORMDATA是什麼
- 23. 什麼是在打字稿編程?
- 24. 角2 - 什麼是window.print在打字稿
- 25. 什麼是打字稿`--lib`庫文件?
- 26. 這是什麼打字稿語法?
- 27. 打字的打字稿
- 28. 帶構造簽名的打字稿接口如何工作?
- 29. 接口+新的VS級+構造函數打字稿
- 30. 打字稿迭代接口屬性
我簡要閱讀本http://stackoverflow.com/questions/2831175/does-c-sharp-有一個相當於scalas結構鍵入它澄清了一點,但仍然想知道它如何在TypeScript中使用 –