Não é possível digitar corretamente função retorna funções

votos
0

Eu sou um novato quando se trata de texto datilografado. I têm uma função que devolve um objecto contendo de duas funções, simples como aquele. Eu defini uma interface de retorno para ele, mas por algum motivo, quando tento usar um dos voltou, eu estou começando

TS2339: Propriedade 'get' não existe no tipo '() => {get: (url: string) => string | nulo; definir: ({url, corpo}: SetItemInterface) => vazia; }'.

Aqui está o código:

import * as Express from express;

interface StorageInterface {
  [url: string]: {
    body: string;
    date: number;
  };
}

interface SetItemInterface {
  body: string;
  url: string;
}

interface ItemInterface {
  body: string;
  date: number;
}

interface CacheFunctionInterface {
  get(url: string): string | null;
  set(params: SetItemInterface): void;
}

const cache = (): CacheFunctionInterface => {
  const storage: StorageInterface = {};
  const cacheTime: number = 1000;

  /**
   * Creates or updates item in store.
   * @param {string} url
   * @param {string} body
   */
  const setItem = ({ url, body }: SetItemInterface): void => {
    storage.url = {
      body,
      date: Number(+new Date()) + cacheTime,
    };
  };

  /**
   * Gets the item if exists, otherwise null;
   * @param {string} url
   */
  const getItem = (url: string): string | null => {
    const item: ItemInterface = storage[url];
    const currentTime = +new Date();

    if (!!item) {
      if (item.date > currentTime) {
        return item.body;
      }
    }

    return null;
  };

  return {
    get: getItem,
    set: setItem,
  };
};

const cacheMiddleware = (req: Express.Request, res: Express.Response, next: Express.NextFunction) => {
  const { url }: { url: string } = req;
  const item: string | null = cache.get(url); // Here's the problem

  if (!!item) {
    return res.send(item);
  }

  return next();
};

export { cacheMiddleware };
export default cache;

e do parque infantil .

O que devo fazer?

Publicado 20/10/2018 em 13:49
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

cache é uma função de:

const cache = (): CacheFunctionInterface => { ...

e você tratá-lo como um objeto, tentando chamar .getmétodo nele.

cache.get(...
Respondeu 20/10/2018 em 13:53
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more