如何正确实现typescript中接口的索引签名



假设我们有下面的接口:

interface Interface1 {
[index: string]: string;
param1: string;
}

我们希望实现上述接口;我们还想将另一个类型为number的字段添加到类字段

class MyClass implements Interface1 {
[index: string]: string;
param1: string;
param2: number; // TS2411 error
}

但我们遇到了一个错误,因为我们的param2类型与索引签名的类型不匹配,所以我尝试更改索引签名(我希望它不会解决问题(:

class MyClass implements Interface1 { // TS2420
[index: string]: string | number; 
param1: string;
param2: number;
}

所以,我的问题是,如何用索引签名实现接口(而不修改它(,并在类中添加另一个不同类型的字段?

interface SomeInterface {
param: string;
}
class SomeClass implements SomeInterface {
param: string;
num: number;
}

对于那个些有索引签名的接口,你们是如何做到这一点的?

它对你有用吗?:

interface Interface1 {
[index: string]: string | number;
}
class MyClass implements Interface1 {
[index: string]: string | number;
param1: string;
param2: number;
constructor(public param1: string, public param2: number) {
this.param1 = param1
this.param2 = param2
}
}

最新更新