타입스크립트에서 상수의 타입을 정의하는 방법은 무엇인가요?
_____A1: 상수를 선언할 때 변수명 옆에 콜론(:)과 타입을 명시하여 타입을 정의할 수 있습니다. 예:
```typescript
const myConst: number = 10;
```
Q2: 상수를 선언할 때 타입을 생략해도 되나요?
A2: 네, 타입스크립트는 초기값을 보고 타입을 추론하기 때문에 타입을 명시하지 않아도 됩니다. 예:
```typescript
const myConst = 10; // 타입스크립트가 자동으로 number 타입으로 추론
```
Q3: 문자열 상수의 타입을 명확하게 지정하려면 어떻게 하나요?
A3: 문자열 리터럴 타입을 지정하려면 다음과 같이 작성할 수 있습니다.
```typescript
const status: "success" = "success"; // status는 "success"라는 문자열 리터럴 타입만 가짐
```
Q4: 상수의 타입을 다른 타입 별칭(type alias)으로 정의할 수 있나요?
A4: 네, 미리 타입 별칭을 정의한 뒤 상수에 적용할 수 있습니다.
```typescript
type Status = "success" | "error" | "pending";
const currentStatus: Status = "success";
```
Q5: 객체 형태의 상수 타입을 정의하는 방법은?
A5: 객체 타입을 인터페이스나 타입 별칭으로 정의한 뒤 상수에 적용할 수 있습니다.
```typescript
interface User {
id: number;
name: string;
}
```
또는
```typescript
type User = { id: number; name: string };
const user: User = { id: 1, name: "Alice" };
```
Q6: 리터럴 값으로 상수 타입을 정의하면 어떤 이점이 있나요?
A6: 리터럴 타입을 지정하면 값이 해당 리터럴만 될 수 있어 의도하지 않은 값 할당을 막고 코드 안정성을 높일 수 있습니다. 예를 들어:
```typescript
const direction: "up" | "down" = "up"; // 다른 문자열 할당 불가
```
Q7: 상수의 타입을 자동으로 리터럴 타입으로 지정하려면 어떻게 해야 하나요?
A7: `as const` 선언을 사용하면 상수의 타입이 리터럴 타입으로 고정됩니다.
```typescript
const colors = ["red", "green", "blue"] as const;
// colors 타입: readonly ["red", "green", "blue"]
```
Q8: `as const`는 상수 타입 정의에 어떤 영향을 미치나요?
A8: `as const`를 사용하면 객체나 배열, 문자열 등의 값을 변경 불가능한 리터럴 타입(읽기 전용)으로 선언해 타이핑을 더 구체적으로 할 수 있습니다.
---
요약:
- 상수 선언 시 `const 변수명: 타입 = 값;` 형식으로 타입 선언 가능
- 타입 생략 시 초기화 값으로 타입 추론
- 문자열 리터럴 및 유니언 타입으로 구체적인 리터럴 타입 지정 가능
- 인터페이스, 타입 별칭을 활용해 객체 형태 상수 타입 정의
- `as const`를 사용해 리터럴 타입 고정 및 readonly 속성 부여 가능
상수는 변하지 않는 값을 나타내므로, 타입을 명확히 정의하는 것이 중요합니다.
아래에서는 타입스크립트에서 상수의 타입을 정의하는 다양한 방법을 살펴보겠습니다.
1. `const` 키워드 사용하기 타입스크립트에서 상수를 정의할 때는 `const` 키워드를 사용합니다.
`const`로 선언된 변수는 재할당이 불가능하지만, 객체나 배열의 경우 내부 요소는 변경할 수 있습니다.
```typescript const PI =
3.14; // 타입은 number로 추론됩니다.
const NAME: string = "Alice"; // 명시적으로 string 타입을 지정 ```
2. 타입 주석 사용하기 타입스크립트에서는 변수 선언 시 타입 주석을 사용하여 변수의 타입을 명시적으로 정의할 수 있습니다.
이는 코드의 가독성을 높이고, 타입 추론이 잘못될 경우를 방지하는 데 유용합니다.
```typescript const age: number = 30; // age는 number 타입 const isActive: boolean = true; // isActive는 boolean 타입 ```
3. 리터럴 타입 사용하기 리터럴 타입을 사용하여 상수의 값을 타입으로 정의할 수 있습니다.
이는 특정 값만 허용되는 타입을 만들고 싶을 때 유용합니다.
```typescript const direction: "left" | "right" = "left"; // direction은 "left" 또는 "right"만 가능 ```
4. 객체와 배열의 타입 정의하기 상수를 객체나 배열로 정의할 때도 타입을 명시할 수 있습니다.
이를 통해 객체의 구조를 명확히 하고, 타입 안전성을 높일 수 있습니다.
```typescript const user: { name: string; age: number } = { name: "Bob", age: 25, }; const colors: string[] = ["red", "green", "blue"]; // colors는 string 배열 ```
5. 제네릭 타입 사용하기 제네릭을 사용하여 상수의 타입을 동적으로 정의할 수도 있습니다.
이는 함수나 클래스에서 유용하게 사용됩니다.
```typescript function createArray
3); // numberArray는 number[] 타입 const stringArray = createArray
6. `as` 키워드 사용하기 타입스크립트에서는 `as` 키워드를 사용하여 변수의 타입을 강제로 지정할 수 있습니다.
이는 타입 추론이 잘못되었거나, 특정 타입으로 간주하고 싶을 때 유용합니다.
```typescript const someValue: any = "this is a string"; const strLength: number = (someValue as string).length; // someValue를 string으로 간주 ```
7. enum 사용하기 상수 집합을 정의할 때는 `enum`을 사용할 수 있습니다.
이는 관련된 상수들을 그룹화하여 관리할 수 있게 해줍니다.
```typescript enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT", } const move: Direction = Direction.Up; // move는 Direction enum의 값 ``` 결론 타입스크립트에서 상수의 타입을 정의하는 방법은 다양합니다.
`const` 키워드를 사용하여 상수를 정의하고, 타입 주석, 리터럴 타입, 객체 및 배열의 타입 정의, 제네릭, `as` 키워드, 그리고 `enum`을 통해 타입을 명확히 할 수 있습니다.
이러한 방법들을 적절히 활용하면 코드의 가독성을 높이고, 타입 안전성을 강화할 수 있습니다.
타입스크립트를 사용할 때는 항상 타입을 명확히 정의하는 습관을 가지는 것이 중요합니다.
작성자:
이승현 [비회원]
| 작성일자: 1년 전
2024-09-10 05:32:14
조회수: 273 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 273 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.