Как правильно использовать fromCharCode.apply с Uint8Array в TypeScript 3? - PullRequest
0 голосов
/ 04 декабря 2018

Итак, у меня есть некоторый код, который я унаследовал, который выглядит следующим образом: String.fromCharCode.apply(null, new Uint8Array(license)); Недавно нам пришлось обновить зависимости проекта, и мы не работаем над TypeScript 3, который жалуется, что код некорректен с этим сообщением: Argument of type 'Uint8Array' is not assignable to parameter of type 'number[]'. Type 'Uint8Array' is missing the following properties from type 'number[]': pop, push, concat, shift, and 3 more. У меня есть несколько других мест с такими же ошибками, и все они Uint8Array, кроме одного, который является Uint16Array.Кажется, проблема связана с некоторыми изменениями в конструкторе Uint8Array, который имеет несколько перегрузок.Я попытался изменить код на const jsonKey: string = String.fromCharCode.apply(null, Array.from(new Uint8Array(license))); и const jsonKey: string = String.fromCharCode.apply(null, Array.prototype.slice.call(new Uint8Array(license))); . Ни один из них не помог воссоздать исходную функцию кода, но они подавили сообщения об ошибках.

1 Ответ

0 голосов
/ 04 декабря 2018

Вы должны быть в состоянии сделать что-то, что будет легче читать, даже если оно не будет таким компактным:

let jsonKey: string = "";
(new Uint8Array(license)).forEach(function (byte: number) {
    jsonKey += String.fromCharCode(byte);
});
...