машинопись ngrx несоответствие типов между (строка | число) [] и строкой [] | число [] - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь обновить мое угловое приложение до 5.2.10 с другими следующими библиотеками: ngrx 5.2.0, машинопись: 2.6.2 tslint 5.10.0

и получаю следующие ошибки во время угловой компиляции:

`

ERROR in src/app/**/xxx-state.ts(301,5): error TS2322: Type '(string | number)[]' is not assignable to type 'string[] | number[]'.
  Type '(string | number)[]' is not assignable to type 'number[]'.
    Type 'string | number' is not assignable to type 'number'.
      Type 'string' is not assignable to type 'number'.
src/app/***/xxx-state.ts(305,5): error TS2322: Type '(string | number)[]' is not assignable to type 'string[] | number[]'.
  Type '(string | number)[]' is not assignable to type 'number[]'.

`

`

error TS2349: Cannot invoke an expression whose type lacks a call signature. Type '((searchElement: string, fromIndex?: number) => number) | ((searchElement: number, fromIndex?: nu...' has no compatible call signatures.

`

Я использую библиотеку @ ngrx / entity для получения нашего состояния данныхинтерфейсы из следующего интерфейса EntityState, определенного в файле 'module.d.ts' ngrx.

`

export interface EntityState<T> {
    ids: string[] | number[];
    entities: Dictionary<T>;
}

`

какие-либо указатели для устранения этих ошибок?

1 Ответ

0 голосов
/ 23 мая 2018

(string|number)[] - это массив, который может содержать строковые или числовые элементы

string[] | number[] - это ЛИБО массив строк ИЛИ массив чисел.

Во-первых, допускаются массивы, подобные [1, "2", 3] второй не позволил бы им.Таким образом, компилятор жалуется на вашу безопасность.Решение: используйте только один из двух.

...