我对打字稿很新,我试图使用嵌套泛型。到现在为止,我无法让它们像我期望的那样工作,可能我错过了一些明显的东西。这是我的示例代码:
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):错误TS2339:属性&#39;有效负载&#39;类型&#39; myServiceResponse&#39;。
上不存在
答案 0 :(得分:1)
以这种方式试试。主要问题是您在callback
定义中的演员表以及分配的位置。此外,课程也必须是通用的。否则,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);
};
如你所见,现在你不必在拉斯语句子中描述data
的类型,它是由请求的定义推断的。