打字稿:只选一个工会

时间:2020-02-16 17:44:24

标签: typescript

我具有Query属性的这种getBankAccounts类型:

export type Query = {
  getBankAccounts: GetBankAccountsResponseOrUserInputRequest,
};

但是它返回GetAccountsResponseUserInputRequest

export type GetBankAccountsResponseOrUserInputRequest = GetAccountsResponse | UserInputRequest;

我只想Pick<Query, "getBankAccounts">的响应类型:GetAccountsResponse

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

type BankAccountQuery = Pick<Query, Exclude<keyof Query, 'getBankAccounts'>> & { getBankAccounts: GetAccountsResponse }

或者您可以使用Overwrite助手:

type Overwrite<T, U extends { [K in keyof T]?: any }> = U & Pick<T, Exclude<keyof T, keyof U>>;
type BankAccountQuery = Overwrite<Query, {getBankAccounts: GetAccountsResponse }>;

请注意,这将选择Query类型的任何其他字段(如果有)。如果您只想选择一个字段,那么您可以简单地声明另一种类型?

type BankAccountQuery = {
  getBankAccounts: GetAccountsResponse;
}

Typescript Playground