Skip to content

TypeScript笔记2-接口(Interfaces)

date: 2021-11-15 16:46:12 tags: javascript

对「对象的形状(Shape)」进行描述

赋值的时候,变量的形状必须和接口的形状保持一致,不可少属性和多属性 例子

interface Person {
    name: string;
    age: number;
}

let tom: Person = {
    name: 'Tom',
    age: 25
};

可选属性 ?

带? 号的属性,可不存在

interface Person {
    name: string;
    age?: number;
}

let tom: Person = {
    name: 'Tom'
};

任意属性 [propName: string]: any

一个接口允许有任意的属性,可以使用如下方式

interface Person {
    name: string;
    age?: number;
    [propName: string]: any;
}

let tom: Person = {
    name: 'Tom',
    gender: 'male'
};

一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集

一个接口中只能定义一个任意属性。如果接口中有多个类型的属性,则可以在任意属性中使用联合类型

只读属性 readonly

readonly 定义只读属性: 只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候

interface Person {
    readonly id: number;
    name: string;
    age?: number;
    [propName: string]: any;
}

let tom: Person = {
    id: 1,
    name: 'Tom',
    gender: 'male'
};

tom.id = 2; //报错

京ICP备2024093538号-1