00062-medium-type-lookup

Back

type LookUp<T extends Record<'type', string>, K> = T extends any
  ? T['type'] extends K
    ? T
    : never
  : never

Solution by Flavour86 #33456

type LookUp<T, U> = T extends { type: U } ? T : never

Solution by Tubring25 #33297

-->

type LookUp<U extends { type: PropertyKey }, T extends PropertyKey> = {
  [P in T]: U extends { type: P } ? U : never }[T]

Solution by Taneros #33043

type LookUp<U extends { type: string }, T extends U['type']> = U extends { type: T } ? U : never;

Solution by dimitriiy #33004

type LookUp<U extends { type: string }, T extends U["type"]> = U extends {
  type: T;
}
  ? U
  : never;

Solution by CAN1177 #32947

// 解答をここに記入
type LookUp<U, T extends string> = {
  [Key in T]: U extends { type: T }
    ? U
    : never
}[T];

Solution by Yasunori-aloha #32881

type LookUp<U ,T> = U extends {type:T} ? U : never;

Solution by bananana0118 #32751

type LookUp<Animal, N> = Animal extends infer A extends { type: string }
    ? A['type'] extends N ? A : never
    : never

Solution by ZhulinskiiDanil #32674

interface UnionType {
  type: string;
}

type LookUp<U extends UnionType, T extends U["type"]> = U extends UnionType
  ? U["type"] extends T
    ? U
    : never
  : never;

Solution by keyurparalkar #32487

처음 풀이

type LookUp<U extends { type: string }, T extends U['type']> = 
  U extends unknown 
    ? { [K in T]: U['type'] extends K ? U : never }[T] 
    : never

더 간결한 풀이

type LookUp<U extends { type: string }, T extends U['type']> = 
  U extends { type: T } 
    ? U
    : never

Solution by dev-hobin #32363

type LookUp<
  T extends {
    type: string;
  },
  K extends T["type"]
> = T extends { type: K } ? T : never;

Solution by QuocCao-dev #31916

// your answers
type LookUp<U, T> = U extends {type: T} ? U:never;

Solution by pea-sys #31888

type LookUp<U, T> = U extends { type: T } ? U : never;

Solution by kai-phan #31624

type LookUp<U extends {type : string}, T extends U['type']> = U extends { type : T } ? U : never;

Solution by jinyoung234 #31583

// your answers
type LookUp<T extends { type: string }, K> = T extends { type: K } ? T : never;

Solution by AhmedRagabKamal #31494

type LookUp<U extends Animal, T> = U extends {type: infer A} ? T extends A ? U : never : never

Solution by vipulpathak113 #31416

type LookUp<U extends { type: string, [key: string]: any }, T extends U['type']> = U extends { type: T, [key: string]: any } ? U : never

Solution by eward957 #31227

// your answers

type LookUp<U, T> = U extends {type: T } ? U : never;

Solution by chliguiy #31012

type LookUp<U, T> = U extends {type: T} ? U : never;

Solution by MyeonghoonNam #30972

type LookUp<U extends { type: string }, T extends U['type']> = U extends { type: T } ? U : never

Solution by VladSt90 #30670

type LookUp<U extends Record<string, any>, T extends U['type']> = U extends { type: T } ? U : never;

Solution by n0hack #30647

type LookUp<U, T> = Extract<U, { type: T }>["type"] extends T
  ? Extract<U, { type: T }>
  : never;

type cases = [
  Expect<Equal<LookUp<Animal, "dog">, Dog>>,
  Expect<Equal<LookUp<Animal, "cat">, Cat>>
];

Solution by WanderedToLa #30581

type LookUp<K, T> = K extends {type : T} ? K : never;

Solution by hskwon5170 #30533

// 你的答案
enum Attribute { type = 'type' }

type LookUp<U, T> = U extends {[Attribute.type]: T} ? U : never

Solution by fyuanz #30193

// your answers
type LookUp<U, T> =  U extends {type: T}  ? U : never

Solution by kerolossamir165 #30085

type LookUp<U extends {type: string}, T extends U['type']> = U extends {type: T} ? U : never

Solution by Bygaga63 #29910

type LookUp<U extends { type: string, [key: string]:  any}, T extends U['type']> = Extract<U, {type: U['type'] & T}>

Solution by julianfere #29864

type LookUp<U, T> = U extends {type: T} ? U : never

Solution by sv-98-maxin #29830

type LookUp<U, T> = U extends { type: T } ? U : never

Solution by codeshareman #29794

type LookUp<T, U> = T extends {type: U} ? T : never;

Solution by bjnslv #29779