Я использую версию Typescript 3.8.3
с immutable@4.0.0-rc.12
.
Когда я создаю OrderedMap
с использованием двумерного массива для его создания, я получаю ошибку от Typescript.
let v: OrderedMap<number, string> = OrderedMap([ [ 3, '2' ] ])
Пример для Codesandbox.io
Похоже, файл определения библиотеки может быть неправильным? (immutable-nonambient.d.ts(1421, 39)
). Это ошибка, которая мне дает:
No overload matches this call.
Overload 1 of 4, '(collection: Iterable<[string | number, string | number]>): OrderedMap<string | number, string | number>', gave the following error.
Argument of type '(string | number)[][]' is not assignable to parameter of type 'Iterable<[string | number, string | number]>'.
The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types.
Type 'IteratorResult<(string | number)[], any>' is not assignable to type 'IteratorResult<[string | number, string | number], any>'.
Type 'IteratorYieldResult<(string | number)[]>' is not assignable to type 'IteratorResult<[string | number, string | number], any>'.
Type 'IteratorYieldResult<(string | number)[]>' is not assignable to type 'IteratorYieldResult<[string | number, string | number]>'.
Type '(string | number)[]' is missing the following properties from type '[string | number, string | number]': 0, 1
Overload 2 of 4, '(obj: { [key: string]: string; }): OrderedMap<string, string>', gave the following error.
Type '(string | number)[]' is not assignable to type 'string'.ts(2769)
immutable-nonambient.d.ts(1421, 39): The expected type comes from this index signature.
Я получаю то же самое для Map
. Если я создаю пустой Map
или OrderedMap
и назначаю его переменной, я могу безошибочно выполнять операции с данными, поэтому возникают проблемы с инициализацией таким способом.
Использование этой подписи: OrderedMap({ 3: '2' })
работает без ошибки компиляции. Но, очевидно, я не могу использовать его, так как хочу, чтобы мои ключи были числами, а использование массива - единственный способ достичь этого.