Typescript索引和接口继承

索引签名

我们既可以使用数字索引去访问数组元素,也可以使用字符串索引去访问数组对象上的属性和方法。

const course = ['math', 'English', 'Chinese']
// 访问数组中的第二个元素
const teach = course[1];
// 访问数组对象的length属性
const ll = course['length'];

字符串索引

一个接口中最多只能定义一个字符串索引签名。字符串索引签名会约束该对象类型中所有属性的类型。

可选属性和方法

一般情况下,接口中属性签名和方法签名定义的对象属性都是必选的。在给接口类型赋值时,如果未指定必选属性则会产生编译错误。如果想要属性和方法是可选的,我们可以在属性名或者方法名后添加问号。如果接口中定义了重载方法,那么所有重载方法签名必须同时为必选或者可选的。

PropertyName?: Type;
PropertyName?(ParameterList): Type

只读

在接口声明中,我们可以使用readonly修饰符来定义只读属性。这个修饰符只能在属性签名和索引签名中使用。如果接口中定义了只读的索引签名,那么接口类型中的所有属性都是只读属性。如果接口中我们既定义了只读索引签名,又定义了非只读的属性签名,那么非只读的属性签名定义的依然是非只读的。除此其他所有的属性都是只读的。

接口的继承

interface children {
age:18
}
interface children1 {
name: 'zss'
}
interface Cir extends children, children1 {
rad: number
}
发表评论

相关文章