Typescript索引和接口继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Typescript索引和接口继承相关的知识,希望对你有一定的参考价值。


索引签名

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

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

字符串索引

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

可选属性和方法

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

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

只读

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

接口的继承

接口是可以继承其他的对象类型。接口中可以继承的对象类型有接口、对象类型的类型别名、类、对象类型的交叉类型。接口的继承需要使用​​extends​​关键字。一个接口可以同时继承多个接口,父接口名之间使用逗号分割。当一个接口继承了其他接口后,子接口既包含了自身定义的类型成员,也包含了父接口中的类型成员。如果子元素接口与父元素接口之间存在同名的类型成员,那么子接口中的类型成员具有更高的优先级,同时子接口与父接口中的同名类型成员必须是类型兼容的。如果两者的类型不兼容,编译时就会出现报错。如果仅是多个父接口之间存在同名的类型成员,而子接口本身没有该同名类型成员,那么父接口同名类型成员的类型必须是完全相同的。否则也会产生编译错误。如果我们想解决编译错误,可以在更高的方法中定义一个同样的方法,这样就不会出现冲突。

interface children 
age:18

interface children1
name: zss

interface Cir extends children, children1
rad: number

以上是关于Typescript索引和接口继承的主要内容,如果未能解决你的问题,请参考以下文章

Typescript中的接口

TypeScript入门五:TypeScript的接口

TypeScript接口

TypeScript接口

如何创建具有索引签名和不同类型的固定属性的 TypeScript 接口?

typescript - 通过使用变量索引对象接口来获取类型