Ответ 1
Используйте Function.prototype.apply:
T.m1.apply(this, args);
Где T - класс включения m1
.
У меня есть два метода:
static m1(...args: any[]) {
//using args as array ...
}
static m2(str: string, ...args: any[]){
//do something
//....
//call to m1
m1(args);
}
Вызов m1(1,2,3)
работает как ожидается. Однако вызов m2("abc",1,2,3)
перейдет к m1([1,2,3])
, а не как ожидайте: m1(1,2,3)
.
Итак, как передать args
в качестве аргументов при вызове m1
в m2
?
Используйте Function.prototype.apply:
T.m1.apply(this, args);
Где T - класс включения m1
.
Собственно, использование ...
снова при вызове метода будет работать.
Он генерирует вызов приложения для вас в javascript.
static m1(...args: any[]) {
//using args as array ...
}
static m2(str: string, ...args: any[]){
//do something
//....
//call to m1
// m1(args);
// BECOMES
m1(...args);
}