一个函数可以有多个可选参数'那是同时需要的吗?

时间:2014-08-18 12:13:45

标签: typescript

我目前正在尝试填充createImageBitmap功能。

[NoInterfaceObject, Exposed=Window,Worker]
interface ImageBitmapFactories {
  Promise createImageBitmap(ImageBitmapSource image, optional long sx, long sy, long sw, long sh);
};

似乎此功能允许createImageBitmap(image)createImageBitmap(image, sx, sy, sw, sh),但不允许其他功能,例如createImageBitmap(image, 0, 0)

如何在TypeScript中执行此操作?我不能这样做:

function createImageBitmap(image: any, sx?: number, sy: number, width: number, height: number) { }

...因为这无法编译。

2 个答案:

答案 0 :(得分:2)

你需要函数重载

declare function createImageBitmap(image: any, sx: number, sy: number, width: number, height: number);
declare function createImageBitmap(image: any, sy: number, width: number, height: number);

但我认为你的声明是错误的。所有x,y,w,h都是可选的:

enter image description here

答案 1 :(得分:1)

看起来你需要功能重载:

function createImageBitmap(image: any);
function createImageBitmap(image: any, sx: number, sy: number, width: number, height: number);
function createImageBitmap(image: any, sx?: number, sy?: number, width?: number, height?: number) {
    // ...
}