Typescript toString('hex') fungerar inte


Snälla någon hjälp mig att konvertera en buffer till hex i TypeScript. Jag får felet error TS2554: Expected 0 arguments, but got 1. när jag försöker kalla på data.toString('hex')

const cipher = crypto.createCipher('aes192', config.secret);

let encrypted = '';
cipher.on('readable', () => {
    const data = cipher.read();
    if (data) {
        encrypted += data.toString('hex');
    }
});
cipher.on('end', () => {
    secret = encrypted;
    resolve(encrypted);
});

cipher.write('some clear text data');
cipher.end();

Det här kodexemplet är praktiskt taget kopierat och klistrat från Node.js-dokumentationen för crypto

Svar #1

cipher.read() returnerar string | Buffer där endast typen Buffer har överlagringen för toString som accepterar en parameter.

Du kan försöka hävda att data är av typen Buffer:

encrypted += (data as Buffer).toString('hex');

Eller så kan du använda en instanceof-typvakt:

if (data instanceof Buffer)
    encrypted += data.toString('hex'); // `data` is inferred as `Buffer` here

Relaterade artiklar