타입스크립트 연습문제 1. 인터페이스 정의 및 사용

 

 

 

✅ 주어진 코드로 "User" 인터페이스를 정의하고 이에 맞게 사용하기

 

 - 해결할 코드

export type User = unknown;

export const users: unknown[] = [
    {
        name: 'Max Mustermann',
        age: 25,
        occupation: 'Chimney sweep'
    },
    {
        name: 'Kate Müller',
        age: 23,
        occupation: 'Astronaut'
    }
];

export function logPerson(user: unknown) {
    console.log(` - ${user.name}, ${user.age}`);
}

console.log('Users:');
users.forEach(logPerson);

 


 

💫 어떻게 할까?

 

1. User 인터페이스 정의

 

우리는 User 객체가 다음과 같은 속성을 가진다는 것을 알고 있습니다.

  • name: 문자열
  • age: 숫자
  • occupation: 문자열

따라서 이를 interface로 정의할 수 있습니다.

export interface User { 
	name: string; 
    age: number; 
    occupation: string; 
}

 

2. users 배열 타입 적용

이제 users 배열의 타입을 명확히 정의할 수 있습니다.

export const users: User[] = [ 
	{ 
    	name: 'Max Mustermann', 
        age: 25, 
        occupation: 'Chimney sweep' 
     },
     { 
     	name: 'Kate Müller', 
        age: 23, 
        occupation: 'Astronaut' 
      } 
];

 

이렇게 하면 TypeScript가 users 배열의 모든 요소가 User 타입을 만족하는지 확인해 줄 수 있습니다.


 

3. logPerson 함수의 타입 명시

현재 logPerson 함수는 user: unknown으로 선언되어 있어, user.name과 user.age에 접근할 때 TypeScript에서 오류가 발생할 가능성이 있습니다. 따라서 함수의 인자 타입을 User로 지정해야 합니다.

 
export function logPerson(user: User) { 
	console.log(` - ${user.name}, ${user.age}`); 
}

이제 logPerson 함수가 User 객체를 안전하게 처리할 수 있습니다.


 

4. 최종 코드

이제 전체 코드를 interface를 적용하여 수정해 보면 다음과 같습니다.

export interface User { 
	name: string; 
    age: number; 
    occupation: string; 
} 

export const users: User[] = [ 
	{ 
    	name: 'Max Mustermann', 
        age: 25, 
        occupation: 'Chimney sweep' 
    }, 
    { 
    	name: 'Kate Müller', 
        age: 23, 
        occupation: 'Astronaut' 
    } 
]; 

export function logPerson(user: User) { 
	console.log(` - ${user.name}, ${user.age}`);
}

console.log('Users:'); 
users.forEach(logPerson);