import Breadcrumb from '../../../components/Breadcrumb'
title: Interface 接口 date: 2023-01-15 authors: Chengzihan tags: [TypeScript]
Interface 接口可以用来定义对象的类型。
功能
- 描述对象的形状(Shape)
- 对类(Class)进行抽象
- Duck Typing(鸭子类型),即如果一个对象有某些属性,那么就可以认为它是某种类型
接口定义
interface Person {
name: string;
age: number;
}
let tom: Person = {
name: 'Tom',
age: 25,
};倘若不一致:
interface Person {
name: string;
age: number;
}
let tom: Person = {
name: 'Tom',
};那么会报错:
Type '{ name: string; }' is not assignable to type 'Person'.
Property 'age' is missing in type '{ name: string; }' but required in type 'Person'.可选属性
当然,也可以定义可选属性:
interface Person {
name: string;
age?: number;
}
let tom: Person = {
name: 'Tom',
};由于可选属性的存在,那么就不会报错了。
只读属性
interface Person {
readonly id: number;
name: string;
age?: number;
}
let tom: Person = {
id: 89757,
name: 'tom',
age:10,
};
tom.id = 9527;上述代码会报错:
Cannot assign to 'id' because it is a read-only property.