2022. 12. 31. 13:31ㆍTypeScript
⚡️array 자료에 타입을 지정
array 자료에 타입을 지정하고 싶으면 string[] 이렇게 기입합니다.
하지만 보다 구체적으로 타입지정하고싶을 때가 있습니다.
"첫 자료는 무조건 string, 둘째 자료는 무조건 number인 array"
이런 것도 가능합니다. tuple 타입 쓰면 됩니다.
⚡️Tuple 타입
tuple type은 array에 붙일 수 있는 타입인데
자료의 위치까지 정확히 지정할 수 있는 타입입니다.
let 멍멍이 :[string, boolean] = ['dog', true];
[ ] 괄호 안에 타입 적으시면 tuple type이 됩니다.
[ ] 안에 차례로 세부 타입을 기입하면 됩니다.
그럼 정말 첫 자료는 무조건 string, 둘째 자료는 무조건 boolean만 허용해주고 다른게 들어오면 에러로 잡아줍니다.
⚡️Tuple 응용 : rest parameter
function 함수(...x :string[]){
console.log(x)
}
1. 함수 정의할 때 파라미터 왼쪽에 점3개 붙이면 rest parameter라고 했습니다.
2. "여기에 파라미터가 몇 개 들어올지 아직 몰라요~" 라는 뜻으로 사용하는 파라미터입니다.
3. x 자리에 입력한 파라미터들은 array에 담겨오기 때문에 array 처럼 타입지정을 해주는게 일반적입니다.
4. tuple을 이용해서 타입지정을 해주는 것도 가능
function 함수(...x :[string, number] ){
console.log(x)
}
함수('kim', 123) //가능
함수('kim', 123, 456) //에러
함수('kim', 'park') //에러
rest parameter를 엄격하게 사용가능합니다.
일반 파라미터 2개 넣는 것과 기능상 다를 바는 없는데
차이는 rest parameter 쓰시면 파라미터가 전부 array에 담겨서 오는게 차이입니다.
⚡️tuple 안에도 옵션가능
type Num = [number, number?, number?];
let 변수1: Num = [10];
let 변수2: Num = [10, 20];
let 변수3: Num = [10, 20, 10];
1. 물음표 넣어서 옵션이라고 표현가능합니다.
2. ?를 붙이면 "number가 있을수도 있고 없을 수도 있다" 의미입니다.
type Num = [number, number?, number];
1. 하지만 위 코드는 tuple type을 지정 했기때문에 중간에 ? 옵션을 넣으면 중간을 빼고 만들 수도 없어 에러가 발생합니다.
2. 그래서 ? 옵션기호는 뒤에만 붙일 수 있습니다.
3. 물음표 2개 쓰고 싶으시면 뒤에서 2개만 붙일 수 있음
4. 물음표 100개 쓰고 싶으시면 뒤에서 100개만 붙일 수 있음
⚡️array 두개를 spread 연산자로 합치는 경우 타입지정은?
let arr = [1,2,3]
let arr2 = [4,5, ...arr] //[4,5,1,2,3]
1. 점 3개 spread 연산자를 사용하면 array의 괄호를 벗겨준다는 의미입니다.
2. 그래서 위 예제처럼 쓰면 array 두개를 합치고 그럴 수 있습니다.
3. arr2 타입지정은 대체 어떻게 해야할까요 tuple 타입으로요.
arr 자리에 자료 몇개가 들어올지도 모르는 상황이라면요
let arr = [1,2,3]
let arr2 :[number, number, ...number[]] = [4,5, ...arr]
1. tuple 타입에 점3개 붙이면 됩니다.
2. 점3개 붙이면 아직 여기에 몇개의 자료가 들어올지 모른다라는 의미입니다.
3. rest parameter 같은 느낌으로다가 활용가능합니다.
let arr2 :[number, number, ...number[]] = [4,5,6,7,8,9,10]
rest parameter 는 배열에 몇개의 자료가 들어올지 모를 경우 사용합니다.
'TypeScript' 카테고리의 다른 글
[TypeScript] d.ts 파일 이용하기 (0) | 2023.01.02 |
---|---|
[TypeScript] 외부 파일 이용시 declare & 이상한 특징인 ambient module (0) | 2022.12.31 |
[TypeScript] React + TypeScript 사용 방법 (0) | 2022.12.31 |
[TypeScript] 타입을 파라미터로 입력하는 Generic (1) | 2022.12.30 |
[TypeScript] 타입과 변수 import export namespace 하는 방법 (0) | 2022.12.30 |