Javascript TypeScript-基于多个参数的函数返回类型

Javascript TypeScript-基于多个参数的函数返回类型,javascript,typescript,types,type-parameter,Javascript,Typescript,Types,Type Parameter,我正在创建一个导出图像的函数。它需要采用格式、导出类型和pathOrWithMetadata参数。我有以下代码: interface ExportMetadata { data: Buffer; width: number; height: number; } export type Format = "png" | "jpeg"; export type ExportTypes = "file" | &qu

我正在创建一个导出图像的函数。它需要采用
格式
导出类型
pathOrWithMetadata
参数。我有以下代码:

interface ExportMetadata {
    data: Buffer;
    width: number;
    height: number;
}

export type Format = "png" | "jpeg";

export type ExportTypes = "file" | "buffer";

export type Output<ExportType> = ExportType extends "file" ? undefined : Buffer;

export default async function exportTo<ExportType extends ExportTypes>(
    image: Image,
    format: Format,
    exportType: ExportType,
    pathOrWithMetadata?: string | boolean
): Promise<Output<ExportType>> { ... }
这适用于以下用例:

exportTo(image, "png", "file", "example.png"); // Promise<undefined>
exportTo(image, "png", "buffer", true); // Promise<ExportMetadata>
exportTo(image, "png", "buffer", false); // Promise<Buffer>

这里的返回类型是
Promise
。如何将返回类型设置为
Promise

我发现解决方案是为
pathrWithMetadata
设置默认值,如下所示:

export default async function exportTo<ExportType extends ExportTypes, PathOrWithMetadata extends PathOrWithMetadataOptions = false>(...): Promise<Output<ExportType, PathOrWithMetadata>> { ... }
导出默认异步函数exportTo(…):Promise{…}
exportTo(image, "png", "buffer");
export default async function exportTo<ExportType extends ExportTypes, PathOrWithMetadata extends PathOrWithMetadataOptions = false>(...): Promise<Output<ExportType, PathOrWithMetadata>> { ... }