TypeScript:如何在分解对象时在1个元素上重新映射接口?
在typescript 3.4中分解对象时,我可以执行以下操作:TypeScript:如何在分解对象时在1个元素上重新映射接口?,typescript,Typescript,在typescript 3.4中分解对象时,我可以执行以下操作: interface IObject { ... } const {loading, data, error}:{loading: boolean, data: IObject, error: string} = myResponseObject; 但是,在我的例子中,我已经定义了一个响应对象,因此我希望像下面这样指定确切的响应类型: interface IResponse { loading: boolean;
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标记为答案,因为使用通用答案回答了我提出的问题之外的问题