오늘의 명언
“ 당신은 소프트웨어 품질을 추구할 수도 있고, 포인터 연산을 할 수도 있다. 그러나 두 개를 동시에 할 수는 없다. ”
-
베르트랑 마이어 (Bertrand Meyer)
300x250
함수 타입스크립트로 3가지 방식으로 정의할 수 있습니다.
1. 함수의 매개변수(파라미터) 타입
2. 함수의 구조 타입
3. 함수의 반환 타입
함수 타입 선언
function sub(num1: number, num2 :number):number{
return num1 - num2
}
sub(3,2) // 1
sub(1) // Too few parameters
sub(3,2,1) // Too many parameters
함수의 매개 변수(파라미터)와 반환 값에 타입을 정의합니다. 반환 값에 타입은 지정하지 않으면 void로 사용할 수 있으며, 보통 return 되는 거에 따라 추론돼서 적용됩니다.
함수 매개변수
function sub(num1: number, num2 ?:number):number{
return num1 - num2
}
sub(3,2) // 1
sub(1) // 타입 에러가 없음
sub(3,2,1) // Too many parameters
물음표?라는 것은 선택적 프로퍼티 (Optional Properties)라고 하며, 위에 num2처럼 해당 객체의 값을 생략할 수 있습니다.
function sub(num1: number, num2 = 4):number{
return num1 - num2
}
sub(3,2) // 1
sub(1) // -3
sub(3,2,1) // Too many parameters
매개변수에 위와 같이 초기값을 설정할 수 있습니다.
function greet(name: string): void {
console.log(`Hello, ${name}!`);
}
greet("Alice"); // Hello, Alice!
"greet()" 함수는 문자열 매개변수를 받아, 해당 문자열과 함께 출력합니다. 그리고 반환 값이 없으므로 void로 나타낼 수 있습니다.
위에 정리한 내용을 토대로 선택적 매개변수와 기본 매개변수를 활용하여 아래와 같은 코드를 작성할 수 있습니다.
function sayHello(name: string, greeting?: string): void {
if (greeting) {
console.log(`${greeting}, ${name}!`);
} else {
console.log(`Hello, ${name}!`);
}
}
sayHello("Alice"); // Hello, Alice!
sayHello("Bob", "Good morning"); // Good morning, Bob!
function repeatString(str: string, numTimes: number = 2): string {
let result = "";
for (let i = 0; i < numTimes; i++) {
result += str;
}
return result;
}
console.log(repeatString("hello")); // hellohello
console.log(repeatString("world", 3)); // worldworldworld
Any 타입
매개변수의 타입이 미리 정해지지 않은 경우가 있습니다. 이 경우에는 타입스크립트에서 'any' 타입을 사용하여 어떤 값이든 받아들일수 있는 유연성을 제공해 줍니다.
function logMessage(message: any) {
console.log(message);
}
logMessage('hello'); // "hello"
logMessage(123); // 123
이와 같이, any 타입을 사용하면 어떤 값이든 받아들일 수 있기 때문에 유용하지만, 타입 체크의 안전성을 보장하지 않습니다. 따라서 any 타입을 남용하지 않고, 최대한 구체적인 타입을 지정하여 안전성을 높이는 것이 좋습니다.
타입스크립트 함수 사용법에 대해서 간단하게 알아보았습니다. 이전 포스팅에서 기본 타입을 정리했다면 그것을 토대로 이번 포스팅에서 함수 매개변수와 반환값에 대한 타입을 지정해 보고 구현해 보았습니다. 정말 간단하게 타입스크립트에 대해서 기초정리에 해당하는 글이라 처음 접하시는 분들은 한번 참고해 주시면 좋을 거 같습니다.
[TypeScript] 타입 스크립트 기본 타입에 대해서 알아보자
반응형
잘못된 내용이 있으면 댓글 부탁드립니다. 감사합니다.