Никакая перегрузка не соответствует этой строке decrpyt вызова в typescript?

#node.js #typescript

Вопрос:

Всем привет, я написал код для шифрования строк, но теперь я хочу расшифровать их для следующего процесса, это мой код .

 export const decrypt = (text: string) =gt; {  try {  if (!ENCRYPTION_KEY) {  throw new Error("encrypt_Key is not set");  }  const texts = text;  let textParts = texts.split(":");  let iv = Buffer.from(textParts.shift(), "hex"); // this error here with no overload Overload 1 of 4, '(arrayBuffer: WithImplicitCoercionlt;ArrayBuffer  let encryptedText = Buffer.from(textParts.join(":"), "hex");  let decipher = createDecipheriv(  "aes-256-cbc",  Buffer.from(ENCRYPTION_KEY),  iv  );  let decrypted = Buffer.concat([  decipher.update(encryptedText),  decipher.final(),  ]);  return decrypted.toString();  } catch (e) {  console.error(e);  } };  

Ответ №1:

Вызов не соответствует какой-либо перегрузке Buffer.from . Buffer.from принимает (string, encoding) , но ваш звонок есть (string|undefined, encoding) .

Typescript, в данном случае, уже помогает вам проверить переменную iv. И следит за тем, чтобы оно не было неопределенным.

Некоторые решения, чтобы исправить это

 let textParts = texts.split(":");   // problem: typeof textParts.shift() = string | undefined  let iv = Buffer.from(textParts.shift(), "hex");   // if you want to use default value  iv = Buffer.from(textParts.shift() || "your default value", "hex");   // if you want to handle error, validate your value before put it in the call  const strIV = textParts.shift()   if(!strIV) {  throw new Error("INVALID_FORMAT")  }   let iv = Buffer.from(strIV, "hex");    // if you're 100% sure that it can not be undefined  let iv = Buffer.from(textParts.shift() as string, "hex"); // cast to string  let iv = Buffer.from(textParts.shift()!, "hex"); // non-null assertion  

Я думаю, что второе соответствует вашему коду, как я вижу в вопросе.

Комментарии:

1. спасибо вам за ваши предложения . Я покончил с этим , но он все еще показывает ошибку