У меня есть интерфейс типа IRawParams
, который просто указывает ключ string
и any
vals.Могу ли я определить класс Typcript, который имеет подпись индекса?
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;
Когда я пытаюсь это, я получаю ошибку компиляции:
error TS2420: Class 'ParamValues' incorrectly implements interface 'IRawParams'. Index signature is missing in type 'ParamValues'.
Могу ли я получить мой класс для реализации IRawParams интерфейса, или иным образом получить машинопись, чтобы экземпляры моего класса, чтобы быть совместимым с индексированный тип {[key: string]: any}
?
Спасибо! Теперь я чувствую себя идиотом. Я обернул подпись фигурными фигурными скобками: '{[key: string]: any}' –