使用静态方法扩展类的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