Как создать псевдонимы экспортированных функций для проверки типов на основе разных аргументов - PullRequest
2 голосов
/ 03 марта 2020

У меня есть это:

export const set = (k: LocalStorageKeys.CP_EMAIL, v: string) => void;
export const set = (k: LocalStorageKeys.CP_USER_ID, v: string) => void;
export const set = (k: LocalStorageKeys.CP_USER, v: User) => void;

export const set = (k: LocalStorageKeys, v: any) : void => {
  return localStorage.setItem(k, JSON.stringify(v));
};

, но tsc это не нравится, оно говорит, что set повторно объявлено в блоке:

TS2451: Невозможно повторно объявить block- переменная области действия 'set'.

Есть ли способ сделать то, что я пытаюсь сделать? Моя цель состоит в том, чтобы проверить тип функции set и, если ключ является определенным ключом, ожидать определенного типа для второго аргумента.

1 Ответ

0 голосов
/ 03 марта 2020

На канале Gitter TypeScript я получил ответ:

enter image description here

Работает очень хорошо, спасибо!

...