TypeScript-Object Type

前言

TypeScript的官方文档最近更新了,刚好我也趁机重新学习一下TypeScript。


对象类型

在JavaScript中,最基本的将数据成组和分发的方式就是通过对象。在TypeScript中,我们通过对象类型来描述对象。

对象类型可以是匿名的:

1
2
3
function greet(person: { name: string; age: number}) {

}

也可以使用接口进行定义:

1
2
3
4
5
interface Person {
name: string;
age: number;
}
function greet(person: Person)

或者通过类型别名:

1
2
3
4
type Person = {
name: string;
age: string;
}

属性修饰符

对象类型中的每个属性都可以说明它的类型、属性是否可选、属性是否只读等信息

可选属性

我们可以在属性名后面加一个?标记表示这个属性是可选的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface PaintOptions {
shape: Shape;
xPos?: number;
yPos?: number;
}

function paintShape(opts: PaintOptions) {
// ...
}

const shape = getShape();
paintShape({ shape });
paintShape({ shape, xPos: 100 });
paintShape({ shape, yPos: 100 });
paintShape({ shape, xPos: 100, yPos: 100 });

在这个例子中,xPosyPos就是可选属性。因为他们是可选的,所以上面所有的调用方式都是合法的。

我们也可以尝试读取这些属性,但如果我们是在strictNullChecks模式下,TypeScript会提示我们,属性可能是undefined


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!