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.
