我有这个:
类型/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;
};