メインコンテンツまでスキップ

MatchTypeKeys

MatchTypeKeys<T, U>: { [K in keyof T]-?: U extends T[K] ? K : never }[keyof T]

Tのプロパティのうち、Uで指定した型を持つプロパティのキーを取り出す

Example

type Post = {
title: string
body: string
revision?: number
createdAt: Date
updatedAt?: Date
}
// Keys => "revision" | "createdAt" | "updatedAt"
type Keys = MatchTypeKeys<Post, Date | undefined>
// Props => { revision?: number; createdAt: Date; updatedAt?: Date }
type Props = Pick<Post, Keys>

Type parameters

Name
T
U