2022. 12. 31. 13:56ㆍCodingTest/TypeScript Q
(문제1)
여러분이 최근에 사먹은 음식의 1. 이름 2. 가격 3. 맛있는지여부를 array 자료에 담아보고 타입지정까지 해보십시오.
오늘 배운 tuple 타입으로 타입지정합시다.
쉬워서 답은 생략합니다.
(예시) [ '동서녹차', 4000, true ] 이런 자료 만들고 타입지정하라는 소리입니다.
let arr :[string, number, boolean] = [ '동서녹차', 4000, true ]
(숙제2)
이렇게 생긴 자료는 타입지정 어떻게 해야할까요?
let arr = ['동서녹차', 4000, true, false, true, true, false, true]
몇개인지는 모르겠지만 true와 false가 셋째 자료부터 잔뜩 들어올 수 있다고 합니다.
tuple 타입과 spread 연산자를 써보도록 합시다.
type Arr = [string, number, ...boolean[]]
let arr :Arr = ['동서녹차', 4000, true, false, true, true, false, true];
(숙제3)
함수에 타입지정을 해보도록 합시다.
function 함수(){
}
1. 이 함수의 첫째 파라미터는 문자,
2. 둘째 파라미터는 boolean,
3. 셋째 파라미터부터는 숫자 또는 문자가 들어와야합니다.
(조건) tuple 타입과 rest parameter를 사용해봅시다.
function 함수(...rest :[string, boolean, ...(number|string)[] ]){
}
함수('a', true, 6, 3, '1', 4)
(숙제4)
다음과 같은 문자/숫자 분류기 함수를 만들어보십시오.
파라미터 중 문자만 모아서 [] 에 담아주고, 숫자만 모아서 [] 에 담아주는 함수가 필요합니다.
문자 숫자 외의 자료는 입력불가능하고 파라미터 갯수 제한은 일단 없습니다.
함수 만들어보시고 함수의 파라미터/return 타입지정도 확실하게 해봅시다.
(동작예시)
함수('b', 5, 6, 8, 'a') 이렇게 사용할 경우 이 자리에 [ ['b', 'a'], [5, 6, 8] ] 이 return 되어야합니다.
(조건) return타입은 tuple 타입으로 해주세요
function 함수(...rest :(string|number)[]){
let result :[string[], number[]] = [[],[]];
rest.forEach((a)=>{
if (typeof a === 'string') {
result[0].push(a)
} else {
result[1].push(a)
}
})
return result;
}
1. 함수 만들고 파라미터는 몇개가 들어올지 모르니 rest parameter 썼고 파라미터 타입은 (string|number)[] 으로 지정했습니다.
2. 결과를 저장할 result라는 변수를 만들고 기본값은 [[], []] 이렇게 만들었고 그거 타입지정은 tuple type을 활용했습니다.
3. rest 파라미터에 forEach()반복문 돌렸고 타입이 string이면 result[0]에 추가해주고 number면 result[1]에 추가해줬습니다.
4. return 하면 타입은 알아서 지정이 잘됩니다.
'CodingTest > TypeScript Q' 카테고리의 다른 글
[TypeScript] 파라미터로 입력하는 Generic 문제 (0) | 2022.12.30 |
---|---|
[TypeScript] 타입을 import export namespace 문제 (0) | 2022.12.30 |
[TypeScript] 함수 rest 파라미터, object array destructuring 문제 (0) | 2022.12.30 |
[TypeScript] Narrowing 문제 (1) | 2022.12.29 |