TypeScript的核心原则之一:对值所具有的 结构 进行类型检查
接口的作用:为这些类型命名,为代码定义契约
接口初探
//必须包含一个label属性且类型为string:interface LabelledValue {label: string;}function printLabel(labelledObj: LabelledValue){console.log(labelledObj.label);}let myObj = {size: 10, label: "Size 10 Object"};printLabel(myObj);
LabelledValue接口就好比一个名字,用来描述上面例子里的要求。 它代表了有一个 label属性且类型为string的对象。
可选属性 color? : string
接口里的属性不全都是必需的。 可选属性在应用“option bags”模式时很常用,即给函数传入的参数对象中只有部分属性赋值了。
只读属性
一些对象属性只能在对象刚刚创建的时候修改其值
interface Point {readonly x: number;readonly y: number}let p1: Point = { x: 10, y: 20 };p1.x = 5; // error!
readonly vs const
判断改用readonly还是const:是看要把它作为一个变量还是作为一个属性。作为变量用const,作为属性用readonly
