0Pricing
TypeScript Academy · 강의

문자열 유니언과 자동 완성

알려진 문자열 값에 대한 편집기 자동 완성을 사용합니다.

문자열 유니언과 자동 완성은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

유니온으로 자동 완성 지원하기

문자열 리터럴의 유니온은 허용되는 값을 제한하는 동시에 편집기의 자동 완성에도 사용됩니다. 하지만 추천을 받으면서도 어떤 문자열이든 전달하고 싶을 때가 있는데, 이때는 영리한 기법으로 두 가지를 모두 얻을 수 있습니다.

기본 문자열 리터럴 유니온

허용할 문자열의 유니온을 선언하세요. 편집기는 정확히 이 옵션들을 제시하고, 유효하지 않은 값은 컴파일 오류가 됩니다.

type Variant = "primary" | "secondary" | "danger"
const v: Variant = "primary"
console.log(v)
// const bad: Variant = "warning" // Error

편집기의 자동 완성

매개변수가 문자열 리터럴 유니온이면 호출 안에서 입력할 때 정확한 구성원들이 나타납니다. 이는 TypeScript에서 가장 사랑받는 편의 기능 중 하나입니다.

type Color = "red" | "green" | "blue"
function paint(c: Color) { return c }
console.log(paint("green")) // editor suggests red/green/blue

제한 사항

엄격한 유니온은 목록에 없는 모든 값을 금지합니다. 일반적인 값을 추천하면서도 임의의 사용자 지정 문자열은 허용하고 싶을 때가 있지만, 일반 유니온만으로는 두 가지를 모두 처리할 수 없습니다.

type Color = "red" | "green"
// You cannot pass "#ff8800" — it is not in the union
function paint(c: Color) { return c }
console.log(paint("red"))

타입을 넓히면 추천을 잃음

단순히 string을 사용하면 어떤 값이든 작동하지만 자동 완성이 완전히 사라집니다. 모든 힌트를 포기하고 완전한 유연성을 얻는 셈이므로 이상적이지 않습니다.

function paint(c: string) { return c }
console.log(paint("#ff8800")) // works, but no suggestions

문자열과 리터럴 유니온 기법

기법은 리터럴을 string & {}와 유니온으로 결합하는 것입니다. 리터럴은 자동 완성에 계속 나타나고, string & {}는 유니온을 축약하지 않으면서 다른 모든 문자열을 허용합니다.

type Color = "red" | "green" | (string & {})
const a: Color = "red"        // suggested
const b: Color = "#ff8800"    // also allowed
console.log(a, b)

문자열과 빈 객체가 작동하는 이유

일반적으로 'red' | string은 단순히 string으로 단순화되어 리터럴이 사라집니다. {}와 교차시키면 TypeScript가 별도로 유지하는 약간 다른 타입이 만들어집니다. 따라서 리터럴은 자동 완성을 위해 살아남고 모든 문자열도 여전히 일치할 수 있습니다.

type A = "red" | string          // collapses to string — no hints
type B = "red" | (string & {})   // keeps "red" as a suggestion
const x: B = "red"
console.log(x)

재사용 가능한 도우미

기법을 제네릭 별칭으로 감싸면 의도를 명확하게 표현할 수 있고 코드베이스 전체에서 재사용할 수 있습니다.

type LiteralUnion<T extends string> = T | (string & {})
type Size = LiteralUnion<"sm" | "md" | "lg">
const s: Size = "custom-size"
console.log(s)

함수에 적용하기

API에서 도우미를 사용하면 호출자에게 자주 사용하는 입력을 추천하면서도 사용자 지정 값을 계속 허용할 수 있습니다.

type LiteralUnion<T extends string> = T | (string & {})
function setIcon(name: LiteralUnion<"home" | "search">) { return name }
console.log(setIcon("home"))     // suggested
console.log(setIcon("my-icon")) // allowed

이 기법을 사용할 때

아이콘 이름, CSS 단위, theme 토큰, 프레임워크 사전 설정처럼 잘 알려진 값이 있지만 확장 가능해야 하는 API에 사용하세요. 닫힌 집합에는 완전한 안전성을 위해 엄격한 유니온을 사용하는 편이 좋습니다.

type LiteralUnion<T extends string> = T | (string & {})
type Unit = LiteralUnion<"px" | "rem" | "%">
const u: Unit = "vh"
console.log(u)

절충점

이 기법은 추천을 유지하지만 안전성을 낮춥니다. 사용자 지정 문자열의 오타를 더 이상 찾아낼 수 없기 때문입니다. 개방성이 기능으로 필요한 곳에서만 의도적으로 사용하고, 기본값으로 사용하지는 마세요.

type LiteralUnion<T extends string> = T | (string & {})
type Status = LiteralUnion<"active" | "inactive">
const s: Status = "actvie" // typo NOT caught — the cost of openness
console.log(s)

빠른 확인

자동 완성 기법에 대한 이해도를 확인해 보세요.

복습

문자열 리터럴 유니온은 편집기의 자동 완성을 지원하고 값을 제한하지만, 엄격한 유니온은 사용자 지정 문자열을 금지하고 일반적인 string은 모든 힌트를 없앱니다. T | (string & {}) 기법은 리터럴을 추천 항목으로 유지하면서 모든 문자열을 허용합니다. 이를 LiteralUnion<T> 도우미로 감싸고, 개방성이 의도된 경우에만 사용하세요. 이 기법은 오타를 찾아내는 안전성을 희생합니다.

자주 묻는 질문

“문자열 유니언과 자동 완성” 강의는 무료인가요?

네 — “문자열 유니언과 자동 완성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“문자열 유니언과 자동 완성”에서 뭘 배우나요?

알려진 문자열 값에 대한 편집기 자동 완성을 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“문자열 유니언과 자동 완성” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 템플릿 리터럴 타입 기초
  2. 구조화된 문자열 모델링
  3. 문자열 유니언과 자동 완성
  4. 내장 문자열 조작 타입
← TypeScript Academy(으)로 돌아가기