Я сделал класс, выполнив следующее перечисление: https://stackoverflow.com/a/51398471
export default class Juice
{
[key: string]: any;
static APPLE = new Juice('APPLE', 'Apple juice');
static ORANGE = new Juice('ORANGE', 'Orange juice');
private constructor(private key:string, public readonly text:string) {
};
}
Когда я получаю доступ с ключом, который я определил, он работает нормально, но не удается, когда я пытаюсь получить доступ динамически, как это:
console.log(Juice.APPLE); //works fine
console.log(Juice['APPLE']); //works fine
const key = 'APPLE'; //works fine
console.log(Juice[key]); //works fine
console.log(Object.keys(Juice).map((key:string) => Juice[key])); // error!
Ошибка:
TypeScript error in `path`
Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'typeof Juice'.
No index signature with a parameter of type 'string' was found on type 'typeof Juice'. TS7053
Кто-нибудь мне поможет, в чем причина ошибки и ее решение?
Пожалуйста, помогите, спасибо.
Я добавил индексную подпись в класс, но это не помогло
[key: string]: any;
export default class Juice
{
[key: string]: any;
static APPLE = new Juice('APPLE', 'Apple juice');
static ORANGE = new Juice('ORANGE', 'Orange juice');
private constructor(private key:string, public readonly text:string) {
};
}
Получить список enum
класса.