🖇️对象类型

要定义对象类型:

const obj = {
  name: "Job",
  age: 20,
};

当你通过对象字面量创建一个对象时,通常 TypeScript 可以自行推导出类型。

我们也可以指定对象的类型,如果我们想要为一个对象设置类型注解,通常是使用interface来声明,例如:

interface Obj {
  name: string
  age: number
}
const obj: Obj = {
  name: "Job",
  age: 20,
};

// Property 'gender' does not exist on type 'Obj'.
obj.gender = "男"

在这种情况下,该对象只存在两个属性name和age,动态增加属性操作会引起编译器报错。

当然也可以用类型别名来声明,它与interface没有任何区别:

作为函数参数使用

接口(interface)

类型接口和来类型别名非常类似,在大部分时候,可以任意选择使用。

两者的差别在于类型别名本身无法添加新的属性,而接口是可扩展的

除了使用extends关键字类继承外,还支持对已经存在的接口添加新属性:

接口名是允许重复存在的,TypeScript 最终会对其进行合并操作。但是类型别名是不能重复

属性修饰符

对象类型中的每个属性都可以指定几件事:类型、属性是否可更改以及是否是必选。

可选属性

通过在属性名末尾添加?将该属性标记为可选属性:

这有帮助吗?