声明一个包含通用类型的变量

时间:2019-08-08 07:58:03

标签: javascript typescript generics typescript-generics

我试图声明一个变量并定义其类型:

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

我遇到以下错误:Cannot find name 'A'. 看起来TS认为我使用的是已经定义的类型A,但是我想要的是这样的:

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

正确的语法是什么?

1 个答案:

答案 0 :(得分:0)

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

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
});

另一个选择是用一个类替换接口:

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

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