2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

타입스크립트에서 NonNullable 타입은 무엇인가요?

_____
Q1: NonNullable 타입이란 무엇인가요?
A1: TypeScript의 `NonNullable` 타입은 타입에서 `null`과 `undefined`를 제외한 모든 타입을 나타냅니다. 즉, 주어진 타입에서 `null`과 `undefined`를 제거한 새로운 타입을 생성합니다.

---

Q2: 어떻게 사용하나요?
A2: `NonNullable` 형태로 사용하며, 여기서 `T`는 원본 타입입니다. 예를 들어, `type A = string | null | undefined;`가 있을 때, `NonNullable`는 `string`이 됩니다.

---

Q3: 왜 사용하나요?
A3: 함수나 변수에서 `null` 및 `undefined`를 제거한 상태로 안전하게 다루고 싶을 때 사용합니다. 타입을 명확히 하여 런타임 에러를 줄이고 코드 가독성을 높입니다.

---

Q4: 예시를 보여주세요.
```typescript
type Sample = string | null | undefined;
type NonNullSample = NonNullable; // 결과: string
```

---

Q5: NonNullable과 관련된 유틸리티 타입은 무엇이 있나요?
A5: 비슷한 유틸리티 타입으로는 `Exclude`가 있습니다. `NonNullable`는 사실상 `Exclude`와 동일한 기능을 수행합니다.

---

Q6: 유틸리티 타입 없이 비슷한 효과를 낼 수 있나요?
A6: 수동으로 제네릭 타입에서 null과 undefined를 제외할 수도 있지만, `NonNullable`이 간결하고 명확해 권장됩니다.

---

Q7: NonNullable은 타입스크립트 버전 어느 때부터 사용 가능합니까?
A7: TypeScript 2.8 버전부터 제공되는 내장 유틸리티 타입입니다.

---

Q8: 배열이나 객체 내부 타입에도 사용할 수 있나요?
A8: `NonNullable`은 주어진 타입 전체에서 null과 undefined를 제거하지만, 배열 내 요소나 객체 프로퍼티 내부 타입까지 자동으로 처리하지는 않습니다. 이런 경우에는 별도의 매핑 타입(map type)을 활용해야 합니다.

---

Q9: NonNullable 사용 시 주의할 점은 무엇인가요?
A9: `null`과 `undefined`를 제거하는 것이므로, 원래 `null`이나 `undefined` 값을 의도적으로 포함하고 싶을 경우 사용하면 안 됩니다. 또한 모든 가능성을 제거하기 때문에 타입이 좁아져서 타입 에러가 발생할 수 있습니다.

---

요약:
`NonNullable`는 타입 `T`에서 `null`과 `undefined`를 제외하는 TypeScript 내장 유틸리티 타입으로, 코드의 안정성과 명확성을 높이기 위해 널 가능성을 제거할 때 사용됩니다.
TypeScript에서 `NonNullable` 타입은 특정 타입에서 `null`과 `undefined`를 제거하는 유틸리티 타입입니다.

이 타입은 TypeScript의 내장 유틸리티 타입 중 하나로, 주로 타입 안전성을 높이고, 코드의 가독성을 향상시키기 위해 사용됩니다.

기본 개념 TypeScript는 정적 타입 시스템을 제공하여 개발자가 코드 작성 시 타입 오류를 사전에 방지할 수 있도록 돕습니다.

그러나 JavaScript의 동적 특성 때문에 `null`이나 `undefined`와 같은 값이 자주 사용됩니다.

이러한 값들은 종종 변수의 초기값이나 특정 조건에서의 반환값으로 사용되기 때문에, 타입 시스템에서 이를 명시적으로 처리하는 것이 중요합니다.

`NonNullable`는 다음과 같은 형태로 정의됩니다: ```typescript type NonNullable = T extends null | undefined ? never : T; ``` 위의 정의를 보면, `NonNullable`는 제네릭 타입 `T`를 받아서, `T`가 `null` 또는 `undefined`인 경우 `never` 타입을 반환하고, 그렇지 않은 경우에는 원래의 타입 `T`를 반환합니다.

결과적으로, `NonNullable`를 사용하면 특정 타입에서 `null`과 `undefined`를 제거한 새로운 타입을 생성할 수 있습니다.

사용 예시 다음은 `NonNullable` 타입을 사용하는 몇 가지 예시입니다.

1. 기본 사용법 ```typescript type NullableString = string | null | undefined; type NonNullableString = NonNullable; // string ``` 위의 예시에서 `NullableString`은 `string`, `null`, `undefined`를 포함하는 타입입니다.

`NonNullable`을 사용하면 `null`과 `undefined`가 제거된 `string` 타입만 남게 됩니다.



2. 함수 매개변수에서의 사용 ```typescript function processValue(value: NonNullable) { // value는 이제 null이나 undefined가 아닙니다.

console.log(value.toUpperCase()); } ``` 위의 `processValue` 함수는 `NonNullable`을 사용하여 매개변수 `value`가 `null`이나 `undefined`가 아닌 `string`임을 보장합니다.

따라서 함수 내부에서 `value`를 안전하게 사용할 수 있습니다.



3. 객체 타입에서의 사용 ```typescript interface User { id: number; name: string | null; email?: string | null; } type NonNullableUser = { [K in keyof User]: NonNullable; }; // NonNullableUser는 { id: number; name: string; email: string; } ``` 위의 예시에서는 `User` 인터페이스를 정의하고, `NonNullable`을 사용하여 모든 프로퍼티에서 `null`과 `undefined`를 제거한 `NonNullableUser` 타입을 생성했습니다.

이로 인해 `NonNullableUser`는 모든 프로퍼티가 필수이며, `null`이나 `undefined`가 없는 타입이 됩니다.

장점 1. 타입 안전성 : `NonNullable`을 사용하면 코드에서 `null`이나 `undefined`로 인한 오류를 사전에 방지할 수 있습니다.

이는 특히 API 응답이나 외부 데이터와 상호작용할 때 유용합니다.



2. 가독성 향상 : 코드에서 `null`과 `undefined`를 명시적으로 처리하지 않아도 되므로, 코드의 가독성이 향상됩니다.

개발자는 타입을 통해 어떤 값이 반드시 존재해야 하는지를 쉽게 이해할 수 있습니다.



3. 유지보수 용이성 : 타입이 명확하게 정의되어 있으면, 코드의 유지보수가 쉬워집니다.

다른 개발자가 코드를 이해하고 수정하는 데 드는 시간이 줄어듭니다.

결론 TypeScript의 `NonNullable` 타입은 타입 안전성을 높이고, 코드의 가독성을 향상시키는 유용한 도구입니다.

`null`과 `undefined`를 처리할 때 발생할 수 있는 오류를 방지하고, 개발자가 보다 명확한 타입 정의를 통해 코드의 의도를 분명히 할 수 있도록 돕습니다.

따라서 TypeScript를 사용하는 개발자라면 `NonNullable`을 적극적으로 활용하는 것이 좋습니다.

작성자: 이지우 [비회원] | 작성일자: 1년 전 2024-09-10 05:32:14
조회수: 141 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.