javascript - 在类型中声明一个包含泛型的变量

标签 javascript typescript generics typescript-generics

我正在尝试声明一个变量并定义它的类型:

const state: State<A, B, C> = { ... };

我收到以下错误:找不到名称“A”。 看起来 TS 认为我正在使用已经定义的类型 A,但我想要的是这样的:

const state<A, B, C>: State<A, B, C> = { ... };

什么是正确的语法?

最佳答案

您可以创建一个工厂函数,例如:

interface State<A, B, C> { 
  a: A,
  b: B,
  c: C
};

function createState<A, B, C>(obj: State<A, B, C>) {
  return obj;
}

const state = createState({
  a: "abc",
  b: 2,
  c: true
});

另一种选择是用类替换接口(interface):

class State<A, B, C> {
  constructor(
    readonly a: A,
    readonly b: B,
    readonly c: C
  ) {}
}

const state = new State("abc", 2, true);

关于javascript - 在类型中声明一个包含泛型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57407824/

相关文章:

javascript - 使用 lodash 或类似的库,如何按最接近的结果对集合进行排序?

javascript - 如何在 Angular2/Angular4 中的 native 元素上使用 querySelector 触发子元素上的单击事件

java - 如何在 Java 中创建泛型类但限制可以使用的类型?

javascript - cordova-plugin-googlemaps 如何从标记数组触发标记的 info_window

javascript - 单击动态更改的元素上的按钮

javascript - 有没有一种简单的方法可以使用 Javascript 在 DOM 中现有的 SVG 路径上绘制居中文本?

angular - 检查 Angular2 中的权限

javascript - 使用 GraphQL 进行 React-Select

Swift 类型删除 - 对于这种情况?

java - Scala 是否有可能在不更改 JVM 的情况下实现泛型?