#javascript #typescript #cryptojs
#javascript #typescript #cryptojs
Вопрос:
У меня есть проект TypeScript, который использует библиотеку CryptoJS. Линтер показывает, что свойство ‘sigBytes’, которое я цитирую, не существует для типа ‘DecryptedMessage’. Где я могу без проблем зарегистрировать это свойство в консоли. Код, который выдает это сообщение:
let dec = CryptoJS.AES.decrypt(text, this.key, {iv: this.iv});
console.log(dec.sigBytes); // There it logs the property correctly
Я получил определение типов из npm. Я попытался настроить переменную dec как CryptoJS.LibWordArray вот так:
let dec: CryptoJS.LibWordArray = CryptoJS.AES.decrypt(text, this.key, {iv: this.iv});
Но линтер показывает, что «в типе ‘DecryptedMessage’ отсутствуют следующие свойства из типа ‘LibWordArray’: sigBytes, words»
Код работает нормально, однако мне интересно, как лучше всего исправить эту или подобные проблемы. Использование any не дает предупреждений,
let dec: CryptoJS.LibWordArray = CryptoJS.AES.decrypt(text, this.key, {iv: this.iv});
но я не уверен, что это хорошая практика
Комментарии:
1. Лучшим вариантом было бы отправить запрос на извлечение в DefinitelyTyped для добавления типов, которые должны существовать, но не существуют
Ответ №1:
Вы можете попробовать использовать утверждение типа: https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions
Ответ №2:
Решена проблема с ключевым словом as (благодаря предложению @Budaa):
let dec = CryptoJS.AES.decrypt(text, this.key, {iv: this.iv}) as CryptoJS.LibWordArray;