我有一个名为IRawParams
的接口类型,它只指定string
个密钥和any
个值。
interface IRawParams {
[key: string]: any
}
我有一个类ParamValues
,它包含一些键/值之上的行为。我想指定ParamValues
类实现IRawParams
接口。
class ParamValues implements IRawParams {
parseFromUrl(urlString: string) {
Parser.parse(urlString).forEach(item => this[item.key] = item.val);
}
}
// so I can do something like this
var params = new ParamValues();
params.parseFromUrl(url);
var userId = params.userId;
当我尝试这个时,我收到编译错误:
错误TS2420:类'ParamValues'错误地实现了接口'IRawParams'。 “ParamValues”类型中缺少索引签名。
我是否可以让我的类实现IRawParams接口,或以其他方式获取Typescript以允许我的类的实例与索引类型{[key: string]: any}
兼容?
答案 0 :(得分:22)
要定义具有索引签名的类,只需在类中编写索引签名:
interface IRawParams {
[key: string]: any
}
class Foo implements IRawParams {
[k: string]: any;
}