Typehero Challenge

Typehero Challenge BEGINNER Generic Function Arguments

tmdgns 2024. 7. 18. 00:05
반응형

(문제 링크)[https://typehero.dev/challenge/generic-type-arguments]

문제

type GroceryStore = unknown;

type GroceryItem = unknown;

type CapreseSalad = unknown;

이 타입을 변형하여

import { Expect, Equal } from 'type-testing';

type test_CapreseSaladName = Expect<Equal<
  CapreseSalad['name'],
  'Caprese Salad'
>>;

type test_CapreseSaladPrice = Expect<Equal<
  CapreseSalad['price'],
  14.99
>>;

type test_CapreseSaladInStock = Expect<Equal<
  CapreseSalad['inStock'],
  true
>>;

type test_KrogerDetroit = Expect<Equal<
  GroceryStore<'Kroger', 'Detroit'>,
  { name: 'Kroger', city: 'Detroit' }
>>;

type test_StopNShopMassachusetts = Expect<Equal<
  GroceryStore<'Stop \'N Shop', 'Massachusetts'>,
  { name: 'Stop \'N Shop', city: 'Massachusetts' }
>>;

이 타입을 통과시키면 된다.

문제 풀이

간단한 제네릭으로 풀 수 있는 문제들이다.

type GroceryStore<Name, City> = {
    name:Name;
    city:City
}

type GroceryItem<Name, InStock, Price> = {
    name: Name
    inStock:InStock
    price:Price
};

type CapreseSalad = GroceryItem<'Caprese Salad', true, 14.99>

이렇게 하면 나온다.

근데 사실

type GroceryStore<Name, City> = {
    name:Name;
    city:City
}

type GroceryItem = {
    price:14.99
};

type CapreseSalad = {
    name:'Caprese Salad'
    inStock:true
    price:14.99
}

이렇게 이상하게 해도 정답이 나오긴한다.

반응형