타입스크립트에선 함수에도 마찬가지로 타입을 지정해줄 수 있다.
const 함수 = (x: number): number => {
return x * 2;
};
// 함수 리턴값에 타입 지정이 없는 경우
const 함수 = (x: number) => {
return x + '하이';
};
파라미터에 타입 뿐만 아니라 함수 자체의 리턴값에도 타입을 지정해줄 수 있다.
함수 내에서 리턴값이 없는 함수 일때, void로 지정을 해준다.
하지만 타입스크립트 내에서 리턴값이 없는 함수라면 자동으로 void 타입으로 지정을 해주기 때문에 따로 지정을 해주지 않아도 된다.
const 함수 = (x: number) :void => {
x * 2;
};
// void가 없더라도 오류가 발생하지 않는다.
const 함수 = (x: number) => {
x * 2;
};
만약 위에처럼 파라미터의 타입을 지정해주고 함수를 정의했는데, 함수를 실행시킬때 파라미터가 없다면
에러가 발생한다.
const 함수 = (x: number) => {
x * 2;
};
함수();
에러가 발생한다.
만약에 파라미터가 있을수도, 없을수도 있다면 파라미터 뒤에 ? 를 붙여주면 파라미터가 있어도, 없어도 된다.
const 함수 = (x?: number) => {
x * 2;
};
함수();
에러가 사라진걸 확인할 수 있다.
?를 붙여준다는것은 union type으로 undefined 타입이 추가되는것과 마찬가지이다.
const 함수 = (x?: number) => {
x * 2;
};
// ⬇️ 와 같음
const 함수 = (x: number | undefined) => {
x * 2;
};