对象的类型--接口-interface

31次阅读

共计 929 个字符,预计需要花费 3 分钟才能阅读完成。

对象的类型--接口 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 为只读属性,只有第一次对象赋值时才能赋值

正文完
 0