오늘은 어제 배웠던 타입스크립트의 기본적인 문법들을 배워보자.
예시
1. 타입 뒤에 배열 요소를 나타내는 대괄호를 넣는 방법let arr:number[] = [1,2,3]
- 배열 요소를 나타내는 Array 뒤에 제네릭을 쓰는 방법 (제네릭은 이후 설명)
let arr: Array<number> = [1,2,3]
예시
let x:[string, number]; x = ['hi', 1] x = [1,'hi'] //error - x의 첫 번째 값은 string, 두 번째 값은 number 인데 그 값이 맞지 않아 오류가 난다. x[2] = 'world' //error - x의 index는 1까지 있는데 index2 에 값을 넣기 때문에 오류가 난다.
예시
function exam():void{ console.log("exam"); }
예시
let a:null = null; let b:undefined = undefined;
let unionType: number | null = 123
예시
function exam():never { while(true){} } function exam2():never{ throw new Error("Error") }
예시 1
function examAdd1(n1:number, n2:number) :number { return n1+n2 }
const examAdd2 = (n1:number, n2:number) => { return n1+n2; }
예시 2
위 함수를 사용한다고 가정했을 때!const a = examAdd(1,2) const b = examAdd('1',2) //error - 인자 갯수가 파라미터와 달라서 에러가 난다. const c = examAdd(1,2,3) //error - 인자 갯수가 파라미터 갯수보다 많아 에러가 난다. const d = examAdd(1) //error - 인자 갯수가 파라미터 갯수보다 적어 에러가 난다.
예시 3
리턴값이 void 인 경우의 함수function printResult(num:number):void { console.log("Result" + num) } printResult(6);
예시1
function exam(n1:number, n2:number):number { if(!n2) return n1; return n1+n2; } const a = exam(1,2) const b = exam(1,2,3) //error - 인자 갯수가 파라미터 갯수보다 많아 에러가 난다. const c = exam(1) //error - 인자 갯수가 파라미터보다 많지만 n2가 들어오지 않았을 때 n1만 return 시켜주었는데 에러가 난다!!
이런 상황에서는 옵셔널 파라미터를 사용하면 된다.
예시2
function exam(n1:number, n2?:number):number { if(!n2) return n1; return n1+n2; } const a = exam(1,2) const b = exam(1,2,3) //error - 인자 갯수가 파라미터 갯수보다 많아 에러가 난다. const c = exam(1) // 위에서는 에러가 났지만 이제 에러가 나지 않는다.
한가지 유의할 점은 위 함수에서는 네임드 파라미터를 사용하지 않아 파라미터가 넣은 순서대로 들어간다.
예시2 const a = exam(1,2)
에서 인자를 1,2 순서로 주었기 때문에 파라미터도 1,2 순서대로 들어간다. (n1=1 , n2=2)
그렇기 때문에 옵셔널 파라미터가 require 파라미터 앞에 위치할 수 없다.
예시1
function exam(n1?:number, n2:number):number { if(!n2) return n1; return n1+n2; } const a = exam(1,2) const b = exam(1,2,3) //error - 인자 갯수가 파라미터 갯수보다 많아 에러가 난다. const c = exam(1) //error - 인자를 첫 번째 파라미터에만 넣어주었지만 두 번째 파라미터가 필수값, 첫 번째 파라미터는 옵션값이기 때문에 에러가 난다.
parameter = default
이런식으로 선언을 해주면 해당 파라미터에 아무것도 들어오지 않았을 때 선언된 값이 들어간다.예시
function exam(n1:number, n2:number = 0) { if(!n1) return n1; return n1+n2; } const a = exam(1,2) // return 3 const b = exam(1) // return 1
예시
function exam(n1:number, ...nums:number[]) { for(key in nums){ totalOfNums += nums[key]; } return n1 + totalOfNums } const a = exam(1,2) // return 3 const b= exam(1,2,3,4,5) // return 15
위에서 a의 nums는 [2] 이고, b의 nums는 [2,3,4,5] 이다.