静态成员不能引用类类型parameters.ts

Mr-*_*mer 4 javascript node.js typescript

我有这个通用类,我想使用该通用参数:

export class OperationResult<TResult>
{

    public success: boolean;
    public message: string;
    public result: TResult;

    constructor(success: boolean, message: string, result: TResult) {
        this.success = success;
        this.message = message;
        this.result = result;
    }

    public static BuildSuccessResult(message: string, result: TResult): OperationResult<TResult> {
        return new OperationResult<TResult>(true, message, result);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它向我显示了该BuildSuccessResult函数的错误:

静态成员不能引用类类型parameters.ts

如何在静态函数上返回通用值?

Nis*_*ant 7

您的静态方法还应该接受如下泛型:

请参阅 TS Playground:https://tsplay.dev/rw2ljm

public static BuildSuccessResult<TResult>(message: string, result: TResult): OperationResult<TResult> {
    return new OperationResult<TResult>(true, message, result);
}
Run Code Online (Sandbox Code Playgroud)

由于静态方法可以在没有类实例的情况下调用,因此该方法必须是泛型的。<TResult>如果方法不是静态的,您将需要部分,因为在这种情况下,TResult可以从实例中推断出。

关于 TypeScript repo有一个冗长的讨论。