我有一个接受对象作为唯一参数的函数。例如:
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。我知道如何使用简单的布尔值来执行此操作,但是如何使用对象来完成此操作?
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> {
// ...
}
应该是您所需要的。这将使文字类型的函数true
和false
属性过载asObject
。
请注意,在声明重载时,实现本身不会为重载集提供签名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句