Kan inte lägga till alternativobjekt till SHA3-funktionen med TypeScript


funktionen SHA3 ger ett alternativ för att kontrollera utdata-längden som visas i detta exempel:

var hash = CryptoJS.SHA3("Message", { outputLength: 512 });
var hash = CryptoJS.SHA3("Message", { outputLength: 384 });
var hash = CryptoJS.SHA3("Message", { outputLength: 256 });
var hash = CryptoJS.SHA3("Message", { outputLength: 224 });

men när det används i TypeScript med @types/crypto-js får jag följande typerrors när jag försöker ange outputLength:

Argument av typen '{ outputLength: number; }' kan inte tilldelas parametern av typen 'string | WordArray | undefined'. Objektliteral får endast specificera kända egenskaper, och 'outputLength' finns inte i typen 'string | WordArray | undefined'.

Svar #1

Det beror på att den funktionen är definierad, i @types/crypto-js, som:

(message: string | LibWordArray, key?: string | WordArray, ...options: any[]) => WordArray;

Som du ser, förväntar den sig tre parametrar, där den andra är nyckeln (som kan vara null). Gör bara så här:

CryptoJS.SHA3("Message", undefined, { outputLength: 512});

Och det borde fungera.

Förresten, det finns en annan @types för det här biblioteket, @types\cryptojs, den kanske passar dig bättre.