Аргумент типа «число» не может быть назначен параметру типа «число и строка» - PullRequest
0 голосов
/ 31 мая 2019

Я хочу использовать метод Array.prototype.includes в моем файле ts, например.

const id = this.selectedItem.id;
ids.includes(id);

Где ids - это массив чисел.Я всегда получаю сообщение об ошибке компиляции: Argument of type 'number' is not assignable to parameter of type 'number & string'

Если явно преобразовать id в число Number(id), я также вижу Type number is not assignable to type string.И когда я явно преобразую id в строку id.toString(), тогда я вижу Type string is not assignable to type number.

Это переполнено.Как метод includes можно использовать в TypeScript?Как использовать это в моем примере?

[Edit] Расширенный пример:

    interface State extends EntityState<IItem> {}

    this.stateSubscription = this.store.select((state: State) => state.items).subscribe(
        val => {
            const selectedId = this.selectedItem ? this.selectedItem.id : null;
            val.ids.includes(selectedId);
    }));

val.ids.includes(selectedId as any) также не работает.

1 Ответ

0 голосов
/ 31 мая 2019

Вы объявили ids как number[] & string[]

Это означает, что параметры, которые вы предоставляете методам, должны иметь тип number[] & string[].

Попробуйте объявить его как number[] | string[], который является одним из обоих, а не обоими.

...