Mam typ interfejsu o nazwie IRawParams
, który po prostu określa klucz string
i any
vals.Czy mogę zdefiniować klasę maszynopisu, która ma podpis indeksu?
interface IRawParams {
[key: string]: any
}
Mam klasy, która zawiera pewne ParamValues
zachowanie na górze kluczy/wartości. Chciałbym określić, że klasa ParamValues
implementuje interfejs 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;
Gdy próbuję to, otrzymuję błąd kompilatora:
error TS2420: Class 'ParamValues' incorrectly implements interface 'IRawParams'. Index signature is missing in type 'ParamValues'.
mogę uzyskać moja klasa zaimplementować interfejs IRawParams, lub w inny sposób zdobyć maszynopis, aby umożliwić przypadki mojej klasie jest zgodny z indeksowany typ {[key: string]: any}
?
Dzięki! Teraz czuję się jak idiota. Zawijam podpis za pomocą nawiasów klamrowych: '{[key: string]: any}' –