javascript - Statisk medlemmer kan ikke referere til klasse-typeparametere.ts


Jeg har denne generiske klassen, og jeg vil bruke de generiske parameterne:

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

men det viser meg denne feilen for BuildSuccessResult-funksjonen:

Statiske medlemmer kan ikke referere til klasse-typeparametere.ts

Hvordan kan jeg returnere en generell verdi i en statisk funksjon?

Svar #1

Din statiske metode bør også akseptere den generiske på denne måten:

Se TS Playground: https://tsplay.dev/rw2ljm

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

Siden den statiske metoden kan kalles uten klasseinstans, må metoden være generisk. Du ville ikke trengt <TResult>-delen hvis metoden ikke var statisk, fordi TResult i så fall kan utledes fra instansen.

Det er en lang diskusjon på TypeScript-repoet.

Relaterte artikler