小编Lar*_*rry的帖子

如何创建一个类型来生成与给定类型匹配的对象的键

我想要一种类型,它将产生另一种类型的键,其属性与给定类型匹配:

type KeyOfType<T, U extends T[keyof T]> = keyof T; // ?? type such that T[KeyOfType<T, U>] == U
Run Code Online (Sandbox Code Playgroud)

例如,考虑接口 I:

interface I {
    a: string;
    b: number|string;
    c: string|number;
    d: string;
}
Run Code Online (Sandbox Code Playgroud)

我想要以下等价物:

type T1 = KeyOfType<I, string>;        // 'a'|'d'
type T2 = KeyOfType<I, string|number>; // 'b'|'c'
type T3 = KeyOfType<I, number>;        // never
Run Code Online (Sandbox Code Playgroud)

我接近以下内容:

type KeyOfTypeTest<T, U> = NonNullable<{
    [K in keyof T]: U extends T[K] ? T[K] extends U ? K : never : never;
}[keyof T]>; …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-typings

5
推荐指数
1
解决办法
1350
查看次数

标签 统计

typescript ×1

typescript-typings ×1