下面定义了一个 EitherOr 的类型来处理这种情况:
使用例子:
实际应用:
上一篇 介绍了联合类型,今儿接着介绍 对象类型 。
在 TypeScript 中,我们使用接口( Interface )来定义对象的类型。
在面向对象语言中,接口( Interface )是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类( classes )去实现( implement )。
TypeScript 中的接口是一个非常灵活的概念,处理可用于对类的一部分进行抽象以外,也常用于「对象的形状(Shape)」进行描述。
上述例子中,我们定义了一个接口 Person ,接着定义了一个变量 frankie ,它的则春裤类型是 Person 。这样,我们就约束了 frankie 的形状必须是和接口 Person 一致。
定义的变量比接口 少了 或者 多了 一些属性是不允许的:
可见,赋值的时森知候,变量的形状必须和接口保持一致。
有时我们希望不要完全匹配一个形状,那么可以用可选属性:
可选属性的含义是该属性可以不存在,但这时仍然孙简不允许添加未定义的属性。
有时候,我们希望一个接口允许有任意的属性,可以使用如下方式:
使用了 [propName: string] 定义了任意属性取 string 类型的值。
需要注意的是, 一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集。
上述例子中,任意属性的值允许是 string ,但是可选属性 age 以及任意属性 height 的值却是 number , number 不是 string 的子属性,所以报错了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)