4

我正在使用 vue 组合 API 并为每个对象都有一个 value 属性的对象数组使用 ref,似乎打字稿将 ref 的值与每个数组内部的属性值混淆了:

在此处输入图像描述

如上图所示,typescript 告诉我们 arr 的类型是一个包含名称和值的对象数组,但是当我使用 ref 时,它检测到错误的类型。即使我像下面那样用作转换,问题也无法解决:

const arr2 = ref(arr as { name: string; value: number }[]);

但是当我将 value 属性更改为 value2 或其他内容时,它将起作用: 在此处输入图像描述

更新

这是我今天面临的另一个问题:

在此处输入图像描述

我想知道我应该如何解决这种类型的错误?

4

1 回答 1

4

很遗憾您使用图像来显示您的代码,因为我必须重新输入一遍。

是的,很明显在对象中使用“值”作为键会使 Typescript 感到困惑。您可以通过声明一个接口来绕过它,然后您也可以使用它来声明arr2

    interface thing {
        name: string,
        value: number
    };

    const arr: thing[] = [
        {name: "x1", value: 1},
        {name: "x2", value: 2}
    ];

    const arr2: Ref<thing[]> = ref(arr);

    arr2.value.forEach(item => console.log(item.name + ':' + item.value));

然而,绕过它的最好方法显然是不要使用“值”作为对象中的键。

于 2020-05-15T00:58:57.263 回答