Typescript - 函数 属性 中的泛型未得到解析

Typescript - generics in function property does not get resolved

我是打字稿的新手,我正在尝试使用嵌套泛型。到目前为止,我无法让它们像我期望的那样工作,可能我遗漏了一些明显的东西。这是我的示例代码:

type GenericServiceResponse<T> = {
  status: number;
  payload: T;
}

type myServicePayload = {
  name: string;
  surname: string;
}

type myServiceResponse = GenericServiceResponse<myServicePayload>;

class GenericServiceRequest {
  callback?: <T>(data:T) => void;
}

let request = new GenericServiceRequest();

request.callback = <myServiceResponse>(data:myServiceResponse) => {
  console.info(data.payload.name);
};

tsc 编译器(目标 es5)的输出是:

main.ts(20,23): error TS2339: Property 'payload' does not exist on type 'myServiceResponse'.

这样试试。主要问题是您在 callback 的定义中进行的强制转换及其分配位置。此外, class 也需要是通用的。否则,Typescript 不知道 T 是什么意思。

type GenericServiceResponse<T> = {
  status: number;
  payload: T;
}

type myServicePayload = {
  name: string;
  surname: string;
}

type myServiceResponse = GenericServiceResponse<myServicePayload>;

class GenericServiceRequest<T> {
  callback?: (data:T) => void;
}

let request = new GenericServiceRequest<myServiceResponse>();

request.callback = data => {
  console.info(data.payload.name);
};

如您所见,现在您不必在 las 语句中指定 data 的类型,它是由 request 的定义推断出来的。