FrontEnd

[Typescript] 구조적 타이핑 예시

mingg123 2022. 3. 2. 21:20
interface Author {
  first : string;
  last : string;
}

function getAuthors(database : PostgresDB) : Author[] {
  const authorRows = database.runQuery('SELECT FIRST, LAST FROM AUTHORS');
  return authorRows.map(row=> ({first : row[0], last : row[1]}))
}


interface DB{
  renQuery : (sql:string) => any[];
}

function getAuthors(database : DB) : Author[] {
  const authorRows = database.renQuery('Select FIRST, LAST FROM AUTHORS');
  return authorRows.map(row=> ({first : row[0], last : row[1]}));
}

runQuery 메서드가 있기 때문에 실제환경에서도 getAuthors 에 PostgresDB를 사용할 수 있음.

구조적 타이핑을 활용하여 더 구체적인 인터페이스를 정의하는 것이 나은 방법임.

유닛 테스트도 손쉽게 할 수 있음.