[번역] null을 ES6 Symbols로 대체하세요
Closed this issue · 0 comments
작은 사이드 프로젝트 라이브러리 작업을 할 때 missing value를 표현해야 했습니다. 과거에는 간단한 세팅을 하거나 더 많이 제어하기 위해 Option을 통해 nullable한 접근법을 사용했습니다. 이 경우에는 둘 다 맞지 않아서 다른 방법을 생각했습니다.
왜 Nullable은 충분하지 않은가
Nullable
은 값이 존재할 때 그 값은 문자열, 숫자, 또는 객체임을 의미합니다. 값이 없을 때 우리는 null
이나 undefined
를 사용하죠.
팁: 타입스크립트에서 nullable types로 작업할 때 strictNullChecks
옵션을 켜두세요.
이 방식은 종종 괜찮습니다. 일반적으로 괜찮지 않은 두 가지 경우가 있습니다.
- 값이
null
이나undefined
가 될 수 있을 때. 결국 이 값들은 유효한 자바스크립트 원시값이고 사람들은 다양하게 이 값들을 사용합니다. - 더 복잡한 로직을 만들고자 할 때
x == null
을 추가하는 것은 귀찮은 일입니다.
많은 경우에서 Promise의 출력값을 제어하고 어떤 값을 리턴할 수 있습니다. 그리고 저는 missing된 두 값이 결국 리턴된다는 것을 예견할 수 있었습니다. 일반적으로 문제 1과 2는 동일한 해결법을 가집니다. Option type을 구현하는 라이브러리를 사용하는 것입니다.
왜 Option은 too much한가
(때때로 Maybe라고 불리는) Option 타입은 두 가지 가능성을 가집니다. 값이 없거나(None
, Nothing
) 값이 있는 경우(Some
, Just
)이죠.
자바스크립트와 타입스크립트에서 이는 값을 감싸는 새로운 구조를 도입함을 의미합니다. 일반적으로 가능한 속성을 정의하는 tag
프로퍼티가 있는 객체입니다.
이는 타입스크립트에서 얼마나 여러분이 빠르게 Option을 구현할 수 있는지를 보여줍니다.
type Option<T> = { tag: 'none' } | { tag: 'some', value: T }
보통 여러분들은 타입을 정의하고 유용한 유틸을 제공하는 라이브러리를 사용할 것입니다.