首页 > 解决方案 > 使用可选键选择

问题描述

在 TypeScript 中,是否有可能有一个Pick-style实用程序类型,其中可以指定在所选对象类型上可能可用或不可用的键?例如:

interface Alpha
{
    a: boolean;
    b: boolean;
}

type Picked = OptionalPick<Alpha, 'a' | 'c'>; // { a: boolean }

标签: typescript

解决方案


是的,有可能,我们可以将第二个参数定义K为扩展PropertyKey,然后用于从union 中的任何属性中Extarct提取:keyof TK

interface Alpha
{
    a: boolean;
    b: boolean;
}

type OptionalPick<T, K extends PropertyKey> = Pick<T, Extract<keyof T, K>>
type Picked = OptionalPick<Alpha, 'a' | 'c'>; 


推荐阅读