2012-10-04 23 views
17

Trong blog post của mình về nguyên cảo, Mark Rendle đang nói, mà một trong những điều anh thích về nó là:."Kiểu gõ cấu cho giao diện" là gì trong nguyên cảo

"gõ cấu cho các giao diện tôi thực sự muốn C# có thể làm điều đó "

Ý của anh ấy là gì?

+0

Tôi đã đọc một thời gian ngắn này http://stackoverflow.com/questions/2831175/does-c-sharp- có-một-tương đương-to-scalas-cấu trúc-đánh máy mà làm rõ nó một chút, nhưng vẫn muốn biết làm thế nào nó được sử dụng trong TypeScript –

Trả lời

18

Về cơ bản, điều đó có nghĩa là các giao diện được so sánh trên cơ sở "nhập vịt" thay vì trên cơ sở nhận dạng loại.

xem xét mã C# sau:

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 

Và mã nguyên cảo tương đương:

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ác spec không bao gồm này một cách chi tiết hơn nhiều, nhưng các lớp học có "thương hiệu" có nghĩa là cùng một mã, được viết với các lớp thay vì giao diện, sẽ có lỗi. C# giao diện không có thương hiệu, và do đó không thể được chuyển đổi hoàn toàn. Cách đơn giản nhất để nghĩ về nó là nếu bạn đang cố gắng chuyển đổi từ giao diện X sang giao diện Y, nếu X có tất cả các thành viên của Y, chuyển đổi thành công, mặc dù X và Y có thể không giống nhau tên.

1

Hãy suy nghĩ.

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 

gì nếu chúng ta nói:

interface IButtonEvent { fire: = ...} 
interface IMouseButtonEvent { fire: = ...} 
... 

nguyên cảo sẽ cho phép điều này, C# sẽ không.

Vì TypeScript nhằm mục đích hoạt động tốt với DOM sử dụng gõ "lỏng", đó là lựa chọn hợp lý duy nhất để chọn loại.

tôi để lại nó lên đến người đọc để quyết định xem họ thích “gõ cấu” ... ..

Các vấn đề liên quan