對象的類型--接口 interface

對象的類型--接口 interface

1. “在 TypeScript 中,我們使用接口(Interfaces)來定義對象的類型。”
2. “在面嚮對象語言中,接口(Interfaces)是一個很重要的概念,它是對行爲的抽象,而具體如何行動需要由類(classes)去實現(implements)”

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'
}

可選屬性的含義是該屬性可以不存在,但仍然不允許添加不存在的屬性

4. 任意屬性

接口中一旦定義了任意屬性,那麼接口中的可選屬性和確定屬性的必須是任意屬性的子屬性
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 的子屬性,所以會報錯

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爲只讀屬性,只有第一次對象賦值時才能賦值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章