函数重载,函数有/无入参时返回值约束

44 阅读1分钟

函数重载,函数有/无入参时返回值约束

TS Playround

interface Config {
  name?: String;
  age?: Number;
}

const config: Config = {};
function getConfig(): Config;
function getConfig<k extends keyof Config>(key: k): Config[k];
function getConfig<k extends keyof Config>(key?: k) {
  return key ? config[key] : config;
}

config.name = 'foo';
config.age = 18;

getConfig();
getConfig('name');