TypeScript:如何在分解对象时在1个元素上重新映射接口?

TypeScript:如何在分解对象时在1个元素上重新映射接口?,typescript,Typescript,在typescript 3.4中分解对象时,我可以执行以下操作: interface IObject { ... } const {loading, data, error}:{loading: boolean, data: IObject, error: string} = myResponseObject; 但是,在我的例子中,我已经定义了一个响应对象,因此我希望像下面这样指定确切的响应类型: interface IResponse { loading: boolean;

在typescript 3.4中分解对象时,我可以执行以下操作:

interface IObject {
    ...
}
const {loading, data, error}:{loading: boolean, data: IObject, error: string} = myResponseObject;
但是,在我的例子中,我已经定义了一个响应对象,因此我希望像下面这样指定确切的响应类型:

interface IResponse {
    loading: boolean;
    data: any;
    error: string;
}
interface IObject {
    ...
}
const {loading, data, error}:{data: IObject} = myResponseObject;

基本上,我想将我的
myResponseObject.data:any
类型转换为
myResponseObject.data:ioobject
类型,在分解结构时,这可能吗?

这可以通过强制转换实现。您可以扩展
i响应
,对
数据
有更严格的定义:

interface IResponseWithTypedData extends IResponse {
 data: IObject;
}
然后,当您取消结构时,应用强制转换

const { data } = myResponseObject as IResponseWithTypedData;

您可以将
数据的类型定义为泛型,然后可以在分解时指定其类型:

interface IResponse<T = any> {
  loading: boolean;
  data: T;
  error: string;
}
interface IObject {
}

declare const myResponseObject: IResponse;
const { loading, data, error }: IResponse<IObject> = myResponseObject;
接口i响应{
加载:布尔;
资料:T;
错误:字符串;
}
接口对象{
}
声明常量myResponseObject:IResponse;
常量{loading,data,error}:IResponse=myResponseObject;

这是一个很好的答案,肯定回答了我提出的问题,但这次我将@aleksey标记为答案,因为使用通用答案回答了我提出的问题之外的问题