gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:26 25 4
gpt4 key购买 nike

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

我有 something.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'.

我真的看不到解决问题的方法,或者它的行为与我预期的不同。

我怎样才能干净地解决这个签名?

最佳答案

How could I cleanly solve this signature

不是干净但可以通过函数重载来完成。例如:

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;
}

关于TypeScript 声明使用静态方法扩展类。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29593905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com