如何基于不同的参数创建用于类型检查的导出函数别名

How to create exported function aliases for type checking based on different arguments

我有这个:

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不喜欢它,它说集合在块中重新声明:

TS2451: Cannot redeclare block-scoped variable 'set'.

有没有办法做我想做的事?我的目标是对 set 函数进行类型检查,如果某个键是某个键,则期望第二个参数是某个类型。

在 TypeScript gitter 频道上,我得到了答案:

效果很好,谢谢!