TypeScript 对象类型
基础使用
对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等,如下实例:
interface Person {
name: string;
age: number;
}
let zjj: Person = {
name: 'zjj',
age: 20
};
上面的例子中,我们定义了一个接口 Person,接着定义了一个变量 zjj,它的类型是 Person。这样,我们就约束了 zjj 的形状必须和接口 Person 一致。
定义的变量比接口少/多了属性是不允许的:
interface Person {
name: string;
age: number;
}
let zjj: Person = {
name: 'zjj'
};
let zjj: Person = {
name: 'zjj',
age: 20,
sex: 'man'
};
//都会报错
可选属性
但是有些时候,我们并不希望对象的形状完全遵守接口的定义(我们希望少/多些属性): 所以我们会用到可选属性
interface Person {
name: string;
age?: number;
}
let zjj: Person = {
name: 'zjj'
};
// 特征是打了个问号,意味着并不是必须的,而是可选的属性
//但是这个时候可以少属性,却不能多属性
任意属性
我们会使用任意属性来实现可以少属性/多属性
interface Person {
name: string;
age?: number;
[sex: string]: any;
}
let zjj: Person = {
name: 'zjj',
sex: 'man'
};
只读属性
有时候我们希望对象中的一些字段只能在创建的时候被赋值,那么可以用 readonly 定义只读属性
interface Person {
readonly id: number;
name: string;
age?: number;
[sex: string]: any;
}
let zjj: Person = {
id: 1,
name: 'zjj',
sex: 'man'
};
zjj.id = 2;
// 该属性只读,赋值操作会报错