首页 > 解决方案 > 索引签名参数类型必须是“字符串”或“数字”

问题描述

我正在使用打字稿在 React 中建立一个电子商店,其中我有一个 Cart 和一个 CartItem 类,如下所示:

export class CartItem {
  public id: bigint;

  public file: File;

  public constructor(file: File) {
    this.id = file.id;
    this.file = file;
  }
}

export class Cart{
  public items: { [id: bigint]: CartItem };

  public constructor() {
    this.items = {};
  }
}

问题是,An index signature parameter type must be either 'string' or 'number' 现在 id 必须是 bigint ,这与索引签名参数不兼容。关于如何解决这个问题的任何建议?

标签: typescript

解决方案


您可以简单地将您的 bigint 转换为字符串。

或者,您也可以获取 bigint 的哈希值。这将为您的字符串提供一个设定的长度,如果您使用真正巨大的数字可能会更好。

如果您需要原始 id,如果您使用哈希方法,只需将其添加到 basketitem 类。


推荐阅读