Búsqueda de sitios web

Typescript declarando una función genérica y asignándole una función flecha


Estoy intentando escribir una función plantilla, que es una función flecha, y asignarla a una variable const,

Se supone que esto debe tener la forma const method: MethodType<T>=<T>(...) => { ... }

Pero se queja cuando intento escribir la variable method. A continuación se muestra un fragmento del código:

export type KeyMethod<T> = (data: T) => any;

export interface DiffResult<T> {
    additions: T[];
    updates: T[];
    deletes: T[];
};

export type DiffMethod<T> = (oldState: T[], newState: T[]) => DiffResult<T>;

                     it complains about this template
                                   vvv
export const diffMethod: DiffMethod<T> = <T>(oldState: T[], newState: T[]) => {
    return {
        additions: [],
        updates: [],
        deletes: []
    }
};

¿Hay alguna manera de hacer esto? Tal vez estoy fallando en seguir la sintaxis, pero no he encontrado un ejemplo similar para eso.

Respuesta #1

Como se indica en un comentario de Nitzan Tomer, deberías escribir como lo siguiente.

export interface DiffResult<T> {
  additions: T[];
  updates: T[];
  deletes: T[];
}

export type DiffMethod = <T>(oldState: T[], newState: T[]) => DiffResult<T>;

export const diffMethod: DiffMethod = <T>(oldState: T[], newState: T[]) => {
  return {
    additions: [],
    updates: [],
    deletes: []
  };
};

Artículos relacionados