TypeScript의 함수에 대해 알아보겠습니다.
함수 정의하기
function returnTwoCouples(person1: string, person2: string): string {
return `${person1}과 ${person2}은 닉네임 입니다.`
}
console.log(returnTwoCouples('잘자세연', '누구세연'));
// 잘자세연과 누구세연은 닉네임 입니다.
위의 예시는 TypeScript에서 함수를 정의하는 기본적인 형태입니다.
- 함수 이름과 파라미터 타입 명시
- function 키워드를 사용하여 함수를 선언합니다.
- 함수 이름을 정의하고 괄호 안에 파라미터와 각 파라미터의 타입을 명시합니다.
(파라미터 타입은 콜론(:) 다음에 명시!) - 리턴 타입 명시
- 콜론(:) 다음에 리턴 타입을 명시합니다. 위의 예제에서는 string 형태로 명시했습니다.
- 만약 함수가 아무것도 리턴하지 않을 경우에는 void 타입을 사용할 수 있습니다.
만약 다른 타입의 파라미터를 입력해 준다면
예상한 타입과 다른 타입을 사용했을 때 나타나는 타입 불일치 오류가 나타나는 것을 확인할 수 있습니다.
그리고 선언해준 파라미터의 개수와 다르게 파라미터 개수를 넣어준다면
해당 함수가 받아들이는 인자의 개수와 전달된 인자의 개수가 일치하지 않을 때 발생하는 오류가 나타나는 것을 확인할 수 있습니다.
이처럼 함수를 정의할 때 기대하는 파라미터의 개수와 타입을 확인하고, 이를 기준으로 함수를 호출할 때 전달되는 인자의 개수와 타입을 맞추어야 합니다.
Optional Parameter
function mulitplyOrReturn(x: number, y?: number) {
if (y) {
return x * y;
} else {
return x;
}
}
console.log(mulitplyOrReturn(10, 20)); //200
console.log(mulitplyOrReturn(10)); //10
- multiplyOrReturn 파라미터에 ?를 사용하여 선택적 파라미터로 만들 수 있습니다.
- 선택적 파라미터는 함수를 호출할 때 전달되거나 전달되지 않을 수 있습니다.
Default Parameter
function multiplyOrReturn2(x: number, y: number = 20) {
return x * y;
}
console.log(multiplyOrReturn2(10)); //200
console.log(multiplyOrReturn2(10, 30)); //300
- multiplyOrReturn2 파라미터에 기본 값을 만들 수 있습니다.
- 기본 파라미터는 파라미터에 기본 값을 설정하여 호출 시 값이 제공되지 않으면 기본 값이 사용됩니다.
나머지 매개변수
function getInfiniteParameters(...args: string[]) {
return args.map((x) => `너무좋아 ${x}`);
}
console.log(getInfiniteParameters('누구세연', '잘자세연', '어디세연'))
- ... 를 사용하여 나머지 매개변수를 나타냅니다. 나머지 매개변수는 배열 형태로 전달됩니다.
특수 반환 타입
function doNotReturn(): void {
console.log('저는 반환을 하지 않습니다.');
}
- void 타입
- void 타입은 함수가 아무런 값을 반환하지 않음을 나타냅니다.
- 예를 들어, doNotReturn 함수는 반환 타입으로 void를 사용하고 있습니다.
이 함수는 값을 반환하지 않고 단순히 콘솔에 메시지를 출력하는 역할을 합니다.
function neverEndingLoop(): never {
while (true) {
// 무한 루프
}
}
function throwErro2(): never {
throw Error();
}
- never 타입
- never 타입은 함수가 절대로 종료되지 않거나 항상 예외 던지는 경우에 사용됩니다.
- neverEndingLoop 함수는 무한 루프를 포함하고 있으며, 이는 결코 종료되지 않습니다.
이러한 함수는 never를 반환합니다.
- throwError 함수는 항상 예외를 던지기 때문에 반환 타입으로 never를 사용합니다.
- never는 다른 타입들과 호환성이 없는 특수한 타입입니다. 함수가 항상 예외를 던지거나 무한 루프를 가지면, 이 함수 반환 타입은 never로 지정하는 것이 타입 시스템에 더 많은 정보를 제공합니다.
이러한 방법들을 조합하여 다양한 유형의 함수를 정의할 수 있습니다.
함수는 TypeScript에서 강력한 타입을 제공하여 코드의 안정성 높일 수 있도록 도와줍니다.
'TypeScript' 카테고리의 다른 글
[TypeScript] Overloading 오버로딩 (0) | 2023.12.30 |
---|---|
[TypeScript] 함수 시그니처 타입으로 선언하기 (0) | 2023.12.22 |
[TypeScript] Narrowing(내로잉) (1) | 2023.11.27 |
[TypeScript] Intersection (2) | 2023.11.10 |
[TypeScript] Union (0) | 2023.11.08 |