對象的類型--接口 interface

對象的類型--接口 interface

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爲只讀屬性,只有第一次對象賦值時才能賦值
相關文章
相關標籤/搜索