2016-05-15 16 views

Trả lời

218

Theo TypeScript Language Specification:

Không giống như một lời tuyên bố giao diện, mà luôn luôn giới thiệu một loại đối tượng được đặt tên, một tuyên bố loại bí danh có thể giới thiệu tên cho bất kỳ loại loại, bao gồm nguyên thủy, công đoàn, và các loại giao lộ.

Các đặc điểm kỹ thuật tiếp tục đề cập đến:

loại giao diện có nhiều điểm tương đồng để gõ bí danh cho loại đối tượng literals, nhưng kể từ khi loại giao diện cung cấp nhiều khả năng họ đang thường ưa thích để gõ bí danh. Ví dụ, các loại giao diện

interface Point { 
    x: number; 
    y: number; 
} 

có thể được viết như kiểu bí danh

type Point = { 
    x: number; 
    y: number; 
}; 

Tuy nhiên, làm như vậy có nghĩa là khả năng sau đây sẽ bị mất:

  • Một giao diện có thể được có tên trong một mệnh đề mở rộng hoặc thực hiện, nhưng một bí danh loại cho một kiểu đối tượng theo nghĩa đen thì không thể.
  • Giao diện có thể có nhiều khai báo được hợp nhất, nhưng không thể có bí danh loại cho loại đối tượng theo nghĩa đen.
+30

"Nhiều khai báo được hợp nhất" có nghĩa là gì trong sự khác biệt thứ hai? – jrahhali

+2

@jrahhali Tôi nghĩ rằng kịch bản * tăng cường * trong [chủ đề SO này] (http://stackoverflow.com/questions/36782896/in-typescript-what-is-the-difference-between-type-and-interface) câu trả lời câu hỏi của bạn – superjos

+8

@jrahhali nếu bạn xác định giao diện hai lần, các kiểu nhập sẽ hợp nhất chúng thành một. –

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