Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用静态方法扩展类的TypeScript声明。_Typescript - Fatal编程技术网

使用静态方法扩展类的TypeScript声明。

使用静态方法扩展类的TypeScript声明。,typescript,Typescript,我正在寻找一些关于如何正确处理这种情况的建议 我有东西.d.ts export class Sprite { static fromFrame(frameId: string): Sprite; static fromImage(imageId: string, crossorigin?: boolean, scaleMode?: number): Sprite; } export class TilingSprite extends Sprite { stati

我正在寻找一些关于如何正确处理这种情况的建议

我有
东西.d.ts

export class Sprite {

    static fromFrame(frameId: string): Sprite;
    static fromImage(imageId: string, crossorigin?: boolean, scaleMode?: number): Sprite;

}

export class TilingSprite extends Sprite {

    static fromFrame(frameId: string, width?: number, height?: number): TilingSprite;
    static fromImage(imageId: string, width?: number, height?: number, crossorigin?: boolean, scaleMode?: number): TilingSprite;

}
在本例中,我得到以下错误:

Error   40  Class static side 'typeof TilingSprite' incorrectly extends base class static side 'typeof Sprite'.   Types of property 'fromImage' are incompatible.
    Type '(imageId: string, width?: number, height?: number, crossorigin?: boolean, scaleMode?: number) => ...' is not assignable to type '(imageId: string, crossorigin?: boolean, scaleMode?: number)
=> Sprite'.
      Types of parameters 'width' and 'crossorigin' are incompatible.
        Type 'number' is not assignable to type 'boolean'.
我真的看不到解决问题的方法,或者说,这与我预期的行为不同

我怎样才能清楚地解决这个签名

我怎样才能清楚地解决这个签名

不干净,但可以通过函数重载来完成。e、 g:

declare class Sprite {
    static fromImage(imageId: string, crossorigin?: boolean, scaleMode?: number): Sprite;
}

declare class TilingSprite extends Sprite {
    static fromImage(imageId: string, crossorigin?: boolean, scaleMode?: number): Sprite;
    static fromImage(imageId: string, width?: number, height?: number, crossorigin?: boolean, scaleMode?: number): TilingSprite;
}

再次感谢@basarat