uni-app要在类里面声明一个属性为{ [key : number] : number }的变量要怎么做

发布于 1周前 作者 caililin 来自 Uni-App

uni-app要在类里面声明一个属性为{ [key : number] : number }的变量要怎么做

游戏模型对象(用于标识当前游戏元素的类)

export class ArrModel {
  private url: string;
  private mark: number;
  private probability: number;
  private multiple: { [key: number]: number };

  constructor(url: string = '', mark: number = 0, probability: number = 0, multiple: { [key: number]: number } = {}) {
    this.url = url;
    this.mark = mark;
    this.probability = probability;
    this.multiple = multiple;
  }

  // 获取 URL
  getUrl() {
    return this.url;
  }

  // 获取 mark
  getMark() {
    return this.mark;
  }

  // 获取 probability
  getProbability() {
    return this.probability;
  }

  // 获取 multiple
  getMultiple() {
    return this.multiple;
  }

  // 设置 URL
  setUrl(url: string) {
    this.url = url;
  }

  // 设置 mark
  setMark(mark: number) {
    this.mark = mark;
  }

  // 设置 probability
  setProbability(probability: number) {
    this.probability = probability;
  }

  // 设置 multiple
  setMultiple(multiple: { [key: number]: number }) {
    this.multiple = multiple;
  }
}

我在运行的时候没问题,但是在打包的时候会告诉我 { [key: number]: number } 是不支持的索引。大佬们这个要怎么解决呢?


1 回复

uni-app 中,如果你需要在类里声明一个属性,其类型为 { [key: number]: number }(即一个对象的键是数字类型,值也是数字类型),你可以使用 TypeScript 来实现。这是因为 TypeScript 提供了对复杂类型的强大支持,而 uni-app 支持使用 TypeScript 进行开发。

下面是一个简单的例子,展示了如何在 uni-app 的类中声明并使用这种类型的属性:

// 假设你有一个名为 MyClass 的类
class MyClass {
    // 声明一个属性 myMap,其类型为 { [key: number]: number }
    private myMap: { [key: number]: number } = {};

    // 构造函数,可以初始化一些数据
    constructor() {
        // 可以在构造函数中初始化 myMap
        this.myMap[1] = 100;
        this.myMap[2] = 200;
    }

    // 一个方法,用于设置 myMap 中的值
    setValue(key: number, value: number): void {
        this.myMap[key] = value;
    }

    // 一个方法,用于获取 myMap 中的值
    getValue(key: number): number | undefined {
        return this.myMap[key];
    }

    // 打印 myMap 中的所有键值对
    printMap(): void {
        for (const key in this.myMap) {
            if (this.myMap.hasOwnProperty(key)) {
                console.log(`${key}: ${this.myMap[key]}`);
            }
        }
    }
}

// 使用 MyClass
const myClassInstance = new MyClass();
console.log(myClassInstance.getValue(1)); // 输出: 100
myClassInstance.setValue(3, 300);
myClassInstance.printMap();
/* 输出:
1: 100
2: 200
3: 300
*/

在这个例子中,我们定义了一个名为 MyClass 的类,其中包含一个名为 myMap 的属性,其类型为 { [key: number]: number }。我们在构造函数中初始化了一些数据,并提供了 setValuegetValue 方法来设置和获取 myMap 中的值。此外,还有一个 printMap 方法用于打印 myMap 中的所有键值对。

请注意,这个例子使用了 TypeScript 的类型注解和接口功能来确保类型安全。如果你正在使用 uni-app 并且希望利用这些高级类型特性,确保你的项目已经配置为支持 TypeScript。如果你还没有配置,可以通过 uni-app 的官方文档了解如何配置 TypeScript 支持。

回到顶部