我有一个泛型类,我想使用这个泛型参数:
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);
}
}
但是它显示了BuildSuccessResult
函数的错误:
静态成员不能引用类类型参数。ts
如何在静态函数上返回泛型值?
静态方法也应该像这样接受泛型:
参见TS playground: https://tsplay.dev/rw2ljm
public static BuildSuccessResult<TResult>(message: string, result: TResult): OperationResult<TResult> {
return new OperationResult<TResult>(true, message, result);
}
由于静态方法可以在没有类实例的情况下调用,因此该方法必须是泛型的。如果方法不是静态的,您将需要<TResult>
部分,因为在这种情况下,TResult
可以从实例中推断出来。
关于TypeScript repo有一个很长的讨论。