Vyhledávání na webu

typescript - Typ 'IArguments' není typ pole


Snažím se vytvořit vlastní logger. Docela jednoduché, ale snažím se zbavit chyb, aby výstup nebyl nečistý. Mám něco takového:

@Injectable()
export class Logger {
    log(...args: any[]) {
        console.log(...arguments);
    }
}

ale v konzoli to dává následující chyby:

Logger.ts(6,9): Error TS2346: Supplied parameters do not match any signature of call target.

a

Logger.ts(6,24): Error TS2461: Type 'IArguments' is not an array type.

Jaký je správný způsob, jak to udělat?

Odpověď č. 1

Volání console.log je nesprávné, prostě předávejte dále přijatý parametr:

@Injectable()
export class Logger {
    log(...args: any[]) {
        console.log(args);
    }
}

Nebo vytisknout jako skutečnou konzoli:

@Injectable()
export class Logger {
    log(...args: any[]) {
        console.log.apply(console, args);
    }
}

Odpověď č. 2

tohle mi fungovalo:

console.log(...Array.from(arguments));

Související články