Appearance

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会出现编译错误。

泛型

具有以下特点的数据类型叫泛型:

  • 定义时不明确使用时必须明确成某种具体数据类型的数据类型(泛型的宽泛)
  • 编译期间进行数据类型检查的数据类型(泛型的严谨)
Last Updated 2023-03-23 13:45:29