首页 > 解决方案 > 有没有办法为 Svelte 商店的更新定义泛型?

问题描述

我在这里查看关于 svelte 中的 typescript 泛型的这一部分,它提到了

Svelte 商店支持开箱即用的仿制药

在我的项目中,我像这样向商店项目添加了一个泛型

interface Car {
  x: number;
  y: number;
}

export const cars = writable<Array<Car>>([])

但是,当我update这样使用时

      cars.update(c) => [
        ...c,
        {      
          x: 1,
          y: 2,
          BAD: "BAD"
        },
      ]);

打字稿没有抱怨。这也发生在set,该方法只有一个any类型。

标签: typescriptsveltetypescript-genericssvelte-store

解决方案


啊,正如@Tholle在这篇文章中指出的那样,由于 Typescripts 结构类型,我需要更加明确,所以为了得到预期的结果,我必须像这样输入我的返回值。

 cars.update(c): Array<Car> => [
        ...c,
        {      
          x: 1,
          y: 2,
          BAD: "BAD"
        },
      ]);

推荐阅读