interface User {
type: 'user';
name: string;
age: number;
occupation: string;
}
interface Admin {
type: 'admin';
name: string;
age: number;
role: string;
}
function logUser(user: User) {
const pos = users.indexOf(user) + 1;
console.log(` - #${pos} User: ${user.name}, ${user.age}, ${user.occupation}`);
}
function logAdmin(admin: Admin) {
const pos = admins.indexOf(admin) + 1;
console.log(` - #${pos} Admin: ${admin.name}, ${admin.age}, ${admin.role}`);
}
const admins: Admin[] = [
{
type: 'admin',
name: 'Will Bruces',
age: 30,
role: 'Overseer'
},
{
type: 'admin',
name: 'Steve',
age: 40,
role: 'Steve'
}
];
const users: User[] = [
{
type: 'user',
name: 'Moses',
age: 70,
occupation: 'Desert guide'
},
{
type: 'user',
name: 'Superman',
age: 28,
occupation: 'Ordinary person'
}
];
export function swap(v1, v2) {
return [v2, v1];
}
function test1() {
console.log('test1:');
const [secondUser, firstAdmin] = swap(admins[0], users[1]);
logUser(secondUser);
logAdmin(firstAdmin);
}
function test2() {
console.log('test2:');
const [secondAdmin, firstUser] = swap(users[0], admins[1]);
logAdmin(secondAdmin);
logUser(firstUser);
}
function test3() {
console.log('test3:');
const [secondUser, firstUser] = swap(users[0], users[1]);
logUser(secondUser);
logUser(firstUser);
}
function test4() {
console.log('test4:');
const [firstAdmin, secondAdmin] = swap(admins[1], admins[0]);
logAdmin(firstAdmin);
logAdmin(secondAdmin);
}
function test5() {
console.log('test5:');
const [stringValue, numericValue] = swap(123, 'Hello World');
console.log(` - String: ${stringValue}`);
console.log(` - Numeric: ${numericValue}`);
}
[test1, test2, test3, test4, test5].forEach((test) => test());
6번 문제를 풀다 막혔는데 힌트로 잘 모르는 함수 오버로드가 주어져서, typescriptlang.org의 핸드북을 다시 읽고 있다.
나중에 다시 풀 생각으로 7번을 먼저 풀었다.
하단의 test를 통과하기 위해서는, swap을 통해 서로 뒤집힌 타입의 함수를 실행시킬 수 있게 제네릭을 통해 타입을 뒤바꿔줘야 한다.
export function swap<K, V>(v1:K, v2:V): [V, K] {
return [v2, v1];
}
728x90
'Typescript > TypeScript exercises' 카테고리의 다른 글
| TypeScript exercises 9번 문제 (0) | 2023.02.16 |
|---|---|
| TypeScript exercises 8번 문제 (0) | 2023.02.16 |
| TypeScript exercises 5번 문제 (0) | 2023.02.14 |
| TypeScrip texercises 4번 문제 (0) | 2023.02.14 |
| TypeScript exercises 3번 문제 (0) | 2023.02.14 |