TypeScript面对对象
Pcjmy2022-10-01TypeScriptTypeScript
TypeScript面对对象
对象类型
在 TypeScript 中,我们通过对象类型(object types)来描述对象。
(1)对象类型匿名
function greet(person: { name: string; age: number }) {
return "Hello " + person.name;
}
(2)使用接口定义
interface Person {
name: string;
age: number;
}
function greet(person: Person) {
return "Hello " + person.name;
}
(3)通过类型别名
type Person = {
name: string;
age: number;
};
function greet(person: Person) {
return "Hello " + person.name;
}
接口
interface Point {
x: number
y: number
}
let drawPoint = (point: Point) => {
console.log({ x: point.x, y: point.y })
}
interface和type区别
1.定义类型范围不同
interface只能定义对象类型或接口当名字的函数类型 type可以定义任何类型,包括基础类型、联合类型、交叉类型、元组
2.接口可以extends一个或者多个接口或类实现一个或者多个接口,也可以继承 type,但type类型没有继承功能,但一般接口继承类和type的应用场景很少见。
3.用type交叉类型&可让类型中的成员合并成一个新的type类型,但接口不能交叉合并
4.接口可合并声明量
定义两个相同名称的接口会合并声明,定义两个同名的type会出现编译错误。
泛型
具有以下特点的数据类型叫泛型:
- 定义时不明确使用时必须明确成某种具体数据类型的数据类型(泛型的宽泛)
- 编译期间进行数据类型检查的数据类型(泛型的严谨)