Generic

dev_crystal·2021년 10월 15일
0

Generic이란?

어떤 타입이 올 지 미리 알 수 없는 상황에서 해당 타입부분을 실행할 때 타입을 받도록 여지를 남겨두는 것입니다.

function

function checkNotNull<T>(arg: T | null): T {
  if (arg == null) {
    throw new Error('not valid number!');
  }
  return arg;
}

class

class SimpleEither<L, R> implements Either<L, R> {
  constructor(private leftValue: L, private rightValue: R) {}
  left(): L {
    return this.leftValue;
  }

  right(): R {
    return this.rightValue;
  }
}

const either: Either<number, number> = new SimpleEither(4, 5);
either.left(); // 4
either.right(); //5

contrains

어떤 타입이 올 지 알 수 없다고 해도, any처럼 사용되지 않기 위해서 제약을 걸 수 있는 부분은 제약을 걸 수도 있습니다.
타입을 좀 더 구체적으로 정할수록 좋습니다.

const obj = {
  name: 'ellie',
  age: 20,
};

const obj2 = {
  animal: '🐕',
};

console.log(getValue(obj, 'name')); // ellie
console.log(getValue(obj, 'age')); // 20
console.log(getValue(obj2, 'animal')); // 🐕

function getValue<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}
profile
개발자

0개의 댓글