“数字”类型的参数不能分配给“数字和字符串”类型的参数

时间:2019-05-31 07:46:57

标签: arrays typescript ngrx typescript-typings ngrx-entity

我想在我的ts文件中使用Array.prototype.includes方法。

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中使用?在我的示例中如何使用它?

[编辑] 扩展示例:

    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 :(得分:0)

您已将ids声明为number[] & string[]

这意味着您提供给方法的参数应为number[] & string[]类型。

尝试将其声明为number[] | string[],这是其中之一,而不是两者都为。