在TypeScript3.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: IObject类型,这可能吗?

最佳答案

可以将data的类型定义为泛型,然后可以在解析器上指定它的类型:

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

declare const myResponseObject: IResponse;
const { loading, data, error }: IResponse<IObject> = myResponseObject;

09-17 09:06