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

Declare a variable in type that includes Generic

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

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

我收到以下错误:Cannot find name '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
});

另一种选择是用 class:

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

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