1. 「在 TypeScript 中,咱們使用接口(Interfaces)來定義對象的類型。」
2. 「在面嚮對象語言中,接口(Interfaces)是一個很重要的概念,它是對行爲的抽象,而具體如何行動須要由類(classes)去實現(implements)」 code
interface Person { name: string; age: number; } let tom:Person { name: 'tom', age: 18 }
變量tom是接口Person數據類型,則tom的全部屬性必須與Person相同,不管是屬性名仍是屬性值的數據類型,不能多也不能少必須徹底一致對象
3. 可選屬性 接口
interface Person { name: string; age?: number; } let tom:Person { name: 'tom' }
可選屬性的含義是該屬性能夠不存在,但仍然不容許添加不存在的屬性ip
4. 任意屬性 string
接口中一旦定義了任意屬性,那麼接口中的可選屬性和肯定屬性的必須是任意屬性的子屬性
interface Person { name: string; age?: number; [propName:string]: any; } // A. let tom:Person { name: 'tom', gender: 'male' } // B. let tom:Person { name: 'tom', age: 12, gender: 'male' }
B會報錯,由於任意屬性gender是string類型, number 不是 string 的子屬性,因此會報錯class
5. 只讀屬性 變量
只讀屬性是隻該字段只在建立的時候被賦值,它的約束力在於第一次給對象賦值的時候,並不是是第一次給只讀屬性賦值的時候
interface Person { name: string; readonly age: number; gender?: string; } let tom:Person { name: 'tom', age: 12, gender: 'male' } tom.age = 15; // 報錯 // age屬性只能在對象賦值時賦值。 let tom:Person { name: 'tom' } // 錯 age爲肯定屬性,賦值時必須包含此屬性 tom.age = 12; // 錯,age爲只讀屬性,只有第一次對象賦值時才能賦值