@neroslava

Как вызвать функцию класса через списки в typescript?

в js можно спокойно сделать вот так
let test = new Myclass();
let list =['get','set'];
test[list[0]](arg)

но в ts ошибка потому что он не знает что ему прийдет (Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'PacketWriter'.)
как исправить ?
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@twoone
Причина описана в тексте ошибки. Вам необходимо использовать кортеж.

class Flintstone {
    say() {
        console.log(` Yabba-Dabba Do`);
    }
}
let fred = new Flintstone();
let list =['say'] as const;
fred[list[0]];


Тоже самое можно сделать с помощью enum или const enum

class Flintstone {
    say() {
        console.log(` Yabba-Dabba Do`);
    }
    go() {
        
    }
}
let fred = new Flintstone();

const enum FlintstoneMethod {
    Say = `say`
}

let keys: FlintstoneMethod[] = [FlintstoneMethod.Say];
fred[keys[0]]();


Кроме того получение ключей членов класса можно автоматизировать. Но это уже в тех случах когда вы сами понимаете для чего и когда это нужно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы