Typescript:如何键入一个对象的属性,我重命名,因为我解构它?



我有这个:

类型/PretaxAccount.ts

export default interface PretaxAccount {
account_info: object[];
available_balance: string;
display_options: string;
account_type: string;
submit_claims_last_date: string;
effective_date: string;
}
import PretaxAccount from 'types/PretaxAccount';
const getPretaxAccount = async ({
account_type,
flex_account_id,
}: {
account_type: string;
flex_account_id: string;
}) => {
const {
data: { account_detail_info: account },   // <---- notice how I'm renaming the property to "account"
} = await PretaxAccountApi.fetchAccountDetail({
account_id: flex_account_id,
account_type,
});
return { account };
};

我试图将account键的值转换为PretaxAccount。我该怎么做呢?PretaxAccountApi。fetchAccountDetail是axios请求,如果有帮助的话。

使用解构时,不能在赋值语句的左侧声明类型。没有相应的语法

但理想情况下,PretaxAccountApi.fetchAccountDetail将返回正确的类型,并且您不需要对任何内容进行大小写。您通常希望使用强类型形状解构值。然后Typescript只做正确的事情,而不需要任何额外的类型。

如果由于某种原因不能这样做,可以先将结果存储在一个类型变量中:

const result: { data: { account_detail_info: PretaxAccount } } =
await PretaxAccountApi.fetchAccountDetail({
account_id: flex_account_id,
account_type,
});
const {
data: { account_detail_info: account },
} = result

在TypeScript中,你可以使用作为<>类型铸件操作符。

如果你好奇的话,你可以在这里找到一个包含更多信息的快速教程。

但是,我实际上并不认为类型转换对于您正在尝试做的事情是必要的,因为帐户值与PretaxAccount接口匹配。

你打算把账户PretaxAccount并返回呢?如果是,可以去掉{}.

return account;

您的问题可能是因为在返回值中{account}周围有括号。我建议去掉括号,并为"PretaxAccount"函数添加返回类型。如果这是你的意图。

另外,为了可读性,我将把参数定义拆分为一个单独的接口。个人偏好,但我认为这样读起来更容易一些:

interface AccountIdInfo {
account_type: string;
flex_account_id: string;
}
const getPretaxAccount = async (accountIdInfo: AccountIdInfo): PretaxAccount => {
const { account_type, flex_account_id } = accountIdInfo;
const {
data: { account_detail_info: account },   // <---- notice how I'm renaming the property to "account"
} = await PretaxAccountApi.fetchAccountDetail({
account_id: flex_account_id,
account_type,
});
return account;
};

相关内容

  • 没有找到相关文章

最新更新