Question
Second Answer
// 배열의 마지막 요소 반환
type lastItem = <T>(arr: T[]) => T
const last: lastItem = (arr) => arr[arr.length-1]
console.log('last item', last([1, 2, 3]))
// 배열 시작부에 item 삽입 및 반환
type fullArr = <T>(arr: T[], item: T) => T[]
const prepend: fullArr = (arr, item) => [item].concat(arr)
console.log('prepend item', prepend([1, 2, 3], 0))
// 두 개의 배열을 섞어서 하나의 배열로 반환
type mixedArr = <T>(arr1: T[], arr2: T[]) => T[]
const mix: mixedArr = (arr1, arr2) => arr1.concat(arr2)
console.log('mix arrays', mix([1, 2, 3], [4, 5, 6]))
// 배열의 길이 반환
type length = <T>(arr: T[]) => number
const count: length = (arr) => arr.length
console.log('count arr', count([0, 1, 2, 3]))
// item 인덱스 반환
type index = <T>(arr: T[], item: T) => number | null
const findIndex: index = (arr, item) => {
const result = arr.findIndex(v => v === item)
if (result === -1) return null
else return result
}
console.log('find index O', findIndex([1, 2, 3], 2))
console.log('find index X', findIndex([1, 2, 3], 4))
// startIndex~endIndex 자른 배열 반환
type slicedArr = <T>(arr: T[], startIndex: number, endIndex?: number) => T[]
const slice: slicedArr = (arr, startIndex, endIndex?) => {
if (endIndex) return arr.slice(startIndex, endIndex+1)
else return arr.slice(startIndex)
}
console.log('slice', slice([1, 2, 3, 4, 5], 2))
console.log('slice to end', slice([1, 2, 3, 4, 5], 2, 3))
Third Answer
type Last = <T>(arr: T[]) => T
const last: Last = (arr) => arr[arr.length - 1]
console.log(last([1, '1', true]))
type Prepend = <T>(arr: T[], item: T) => T[]
const prepend: Prepend = (arr, item) => {
arr.unshift(item)
return arr
}
console.log(prepend([1, '1', true], false))
type Mix = <T>(arr1: T[], arr2: T[]) => T[]
const mix: Mix = (arr1, arr2) => [...arr1, ...arr2]
console.log(mix([1,'1', true], [false, 2]))
type Count = <T>(arr: T[]) => number
const count: Count = (arr) => arr.length
console.log(count([1, '1', true]))
type FindIndex = <T>(arr: T[], item: T) => number | null
const findIndex: FindIndex = (arr, item) => {
return arr.includes(item) ? arr.indexOf(item) : null
}
console.log(findIndex([1, '1', true], '1'))
console.log(findIndex([1, '1', true], '2'))
type Slice = <T>(arr: T[], stratIndex: number, endIndex?: number) => T[]
const slice: Slice = (arr, startIndex, endIndex?) => {
return endIndex ? arr.slice(startIndex, endIndex+1) : arr.slice(startIndex)
}
console.log(slice([1, '1', true, false], 1))
console.log(slice([1, '1', true, false], 1, 2))
'Front-end > 타입스크립트로 블록체인 만들기' 카테고리의 다른 글
[TS] Interfaces (1) | 2024.01.02 |
---|---|
[TS] Classes (1) | 2024.01.02 |
[TS] Polymorphism 다형성 (0) | 2023.12.20 |
[TS] Why not JavaScript (0) | 2023.12.18 |
[TS] Overloading (0) | 2023.12.15 |