Typescript函数与对象重载

未定义

我有一个接受对象作为唯一参数的函数。例如:

interface MyMap<T> {
  [id: string]: T;
}

type Options = {
  asObject: boolean,
  other?: Function
};

  function get(options: Options): any[];
  function get(options: Options): MyMap<any>;
  function get(options: Options): any[] | MyMap<any>;
  function get(options: Options = {asObject: false, other: () => {}}): any[] | MyMap<any> {
    if (options.asObject) return {} as MyMap<any>;

    return [];
}


const result = get({asObject: true});

当asObject值为true时,我想将类型推断为MyMap。我知道如何使用简单的布尔值来执行此操作,但是如何使用对象来完成此操作?

阿鲁安·哈达德(Aluan Haddad)
function get(options: {asObject: true}): MyMap<any>;
function get(options: {asObjectb false}): any[];
function get(): any[];
function get(options: Options = {asObject: false, other: () => {}}): any[] | MyMap<any> {
   //  ... 
}

应该是您所需要的。这将使文字类型的函数truefalse属性过载asObject

请注意,在声明重载时,实现本身不会为重载集提供签名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章