EtoC
함수에 타입 지정하기 본문
function type
함수에 타입을 지정할때 파라미터와 return값, 2군데에 타입을 지정할 수 있다.
1. 파라미터에 타입 지정하기
위 이미지의 add(x)의 x부분에 ...표시를 해놓고 any타입을 임시적으로 주었으고 타입을 설정해주라고 한다.
함수의 매개변수에 타입을 지정하는 방법은 변수 타입을 선언할때와 같다.let a;
라고 선언만 해두면 타입스크립트는 타입을 any
로 자동할당
해준다.
function add(x: nember) {
//매개변수에 타입을 지정
return x + 4;
}
2. retrun 값의 타입 지정하기
function add(x): number {
//return 값을 숫자타입으로 지정
return x + 4;
}
add(1); //5가 리턴
add("6"); //error
void type
함수에서만 지정할 수 있는 타입으로 java나 c언어의 void와 유사하다.
void는 리턴이 없는 자료형으로 return 을 못하도록 하는것이다.(이름대로 무효처리)
🚫 자바스크립트와의 차이점
자바스크립트와 달리 타입스크립트는 파라미터값을 꼭 써줘야한다.
안쓰고싶을경우에는 뒤에 옵셔널 체이닝을 사용하면 파라미터값이 없더라도 접근할 수 있다.
function add(x?: number): void {
return x + 1;
}
add();
아래의 코드처럼 타입을 지정하지않고 식을 돌리면 에러가 난다.
let b: string | number;
b - 1;
이렇게 아직 타입이 확정되지 않은경우 type을 Narraowing 해줘야한다.
Narrawing 판정 문법
변수의 타입이 무엇인지 특정지을수 있으면 타입스크립트가 narrowing 문법으로 인정해준다.
typeof()
if문을 사용하여 typeof 연산자를 써서 타입이일치하면 이라는 조건을 주어 타입을 확정하는것도 narrawing 방법중 하나이다.
📌 주의) if 문 사용시 끝까지 써야 에러가 날 확률이 적다. else,else if를 안쓰면 에러가 날 수 있다.
속성명 in 오브젝트 자료
인스턴스 instanceof 부모
assertion 문법
assertion은 타입을 덮어쓰는 문법으로 if문을 쓰지않아도 된다.
function add (x: string | number){
let arr : number[] =[];
arr[0] = x as number;// as 왼쪽의 변수를 number로 덮어씌워달라고 하는것
}
}
add(3)
⛔️ assertion 주의사항
- 특정타입으로 narroing 할때 ⭕️ / 타입을 a 에서 b로 바꿀때 ❌
- 어떤 타입이 들어올지 확실할때 써야한다. (if문이 훨씬 안정적이므로 if문을 쓰자.)
- 다른 사람 코드에서 타입에러날때 디버깅용으로 쓰자.