타입스크립트에서 함수의 타입을 정의하는 방법은 무엇인가요?
_____A1: 함수의 매개변수와 반환값에 타입을 명시하는 방식입니다. 예를 들어,
```typescript
function add(a: number, b: number): number {
return a + b;
}
```
위 코드는 매개변수 `a`와 `b`가 숫자형이며 함수는 숫자를 반환함을 명시합니다.
---
Q2: 함수 타입을 별도로 선언하는 방법은?
A2: 함수 타입을 변수에 할당하는 경우 아래와 같이 작성할 수 있습니다.
```typescript
let multiply: (x: number, y: number) => number;
multiply = (a, b) => a * b;
```
여기서 `(x: number, y: number) => number`가 함수 타입입니다.
---
Q3: 타입 별칭(Type Alias)으로 함수 타입을 정의할 수 있나요?
A3: 네, 가능합니다. 예를 들어
```typescript
type Operation = (a: number, b: number) => number;
const divide: Operation = (x, y) => x / y;
```
`Operation`이라는 이름으로 함수 타입을 정의해 재사용할 수 있습니다.
---
Q4: 인터페이스로 함수 타입을 정의하려면 어떻게 하나요?
A4: 인터페이스에 호출 시그니처(Call Signature)를 써서 정의할 수 있습니다.
```typescript
interface Greeter {
(name: string): string;
}
const sayHello: Greeter = (name) => `Hello, ${name}!`;
```
---
Q5: 옵셔널 매개변수가 있는 함수 타입 정의는 어떻게 합니까?
A5: 매개변수 뒤에 `?`를 붙이면 옵셔널 매개변수가 됩니다.
```typescript
function greet(name: string, age?: number): string {
return age ? `${name} is ${age} years old.` : `${name} is ageless.`;
}
```
---
Q6: 기본값이 있는 매개변수 타입 정의는 어떤가요?
A6: 기본값이 있으면 매개변수는 암시적으로 옵셔널이며 타입도 지정할 수 있습니다.
```typescript
function log(message: string = "Default message"): void {
console.log(message);
}
```
---
Q7: 반환 타입이 없는 함수(즉 void 함수)는 어떻게 표시하나요?
A7: 반환 타입을 `void`로 지정합니다.
```typescript
function printMessage(message: string): void {
console.log(message);
}
```
---
Q8: 가변 인자(rest parameters)의 타입은 어떻게 지정하나요?
A8: 다음과 같이 배열 타입으로 지정합니다.
```typescript
function sum(...numbers: number[]): number {
return numbers.reduce((acc, curr) => acc + curr, 0);
}
```
---
Q9: 제네릭 함수를 타입 정의하려면?
A9: `
```typescript
function identity
return arg;
}
```
---
Q10: 화살표 함수의 타입 정의 방법은?
A10: 변수에 직접 함수 타입을 지정하거나, 인라인으로 매개변수 타입과 반환 타입을 명시합니다.
```typescript
const increment: (n: number) => number = (x) => x + 1;
// 또는
const decrement = (x: number): number => x - 1;
```
---
요약하자면, 타입스크립트에서는 함수 정의 시 매개변수 옆에 타입을 표기하고, 함수명 뒤에 반환 타입을 명시하거나, 함수 타입을 별도의 타입 별칭이나 인터페이스로 정의할 수 있습니다.
작성자:
이주희 [비회원]
| 작성일자: 1년 전
2024-09-10 05:32:08
조회수: 162 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 162 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.