Búsqueda de sitios web

javascript - Declarar una variable en un tipo que incluya Genérico


Estoy intentando declarar una variable y definir su tipo:

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

Estoy recibiendo el siguiente error: No se puede encontrar el nombre 'A'. Parece que TS piensa que estoy usando un tipo A que ya está definido, pero lo que quiero es algo así:

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

¿Cuál es la sintaxis correcta?

Respuesta #1

Puedes crear una función de fábrica, como:

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

Otra opción es reemplazar la interfaz por una clase:

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

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