OPEN HYPER STEP
← 목록으로 (TypeScript)
TS · 3 / 34
ts
CHAPTER 3 / 34
읽기 약 2
SYNTAX

TypeScript로 만드는 대표기업 서비스


핵심 개념

Microsoft·Slack·Airbnb·Stripe·Vercel이 사용하는 TS 기법과 기초→중급→심화 프롬프트를 사례별로 분석한다.

본문

TypeScript는 단순한 타입 시스템이 아닙니다. Microsoft·Slack·Airbnb·Stripe·Vercel 같은 기업들이 TS를 어떻게 활용해 안정적인 거대 코드베이스를 만드는지 살펴보고, 같은 기법을 적용하는 AI 프롬프트를 단계별로 제공합니다.


1. Microsoft — VS Code (TS로 만든 최대 프로젝트)

사용 기술: 100% TypeScript, Monorepo, 엄격한 strict 옵션, 자체 LSP

VS Code는 TypeScript의 창시자 Microsoft가 만든 가장 큰 TS 프로젝트입니다. 50만 줄 이상의 TS 코드로 운영되며, 매주 수백 명의 기여자가 안전하게 코드를 추가합니다.

🟢 기초

📋 코드 (3줄)
VS Code 확장 프로그램의 기본 구조를
activate 함수와 명령 등록 코드로 보여줘.
타입 정의의 역할을 주석으로.

🟡 중급

📋 코드 (3줄)
VS Code 확장의 메시지 통신을 TS로 설계해줘.
Webview ↔ Extension 양방향 메시지의 타입 안전성을
유니온 + 디스크리미네이터 패턴으로 보장.

🔵 심화

📋 코드 (3줄)
VS Code 수준의 대규모 TS 프로젝트 아키텍처를 설계해줘.
포함: monorepo / 의존성 관리 / 모듈 경계 /
점진적 strict 도입 / build 캐싱 / type-check 분리.

2. Slack — 데스크톱 앱 (Electron + TS)

사용 기술: Electron + React + TypeScript, IPC 타입 동기화

Slack 데스크톱은 Electron + TS로 만들어졌습니다. 메인 프로세스와 렌더러 프로세스 간 통신(IPC)을 타입으로 안전하게 보호합니다.

🟢 기초

📋 코드 (3줄)
Electron의 메인 vs 렌더러 프로세스 차이를
비유 + 다이어그램으로 설명해줘.
IPC가 왜 필요한지도.

🟡 중급

📋 코드 (3줄)
IPC 메시지를 TS 인터페이스로 정의하고
양쪽에서 같은 타입을 공유하는 코드를 만들어줘.
Discriminated Union으로 메시지 종류 식별.

🔵 심화

📋 코드 (4줄)
Slack 수준 데스크톱 앱의 TS 아키텍처를 설계해줘.
포함: 모노레포 / 공유 타입 패키지 /
IPC 코드 자동 생성 / 보안(contextIsolation) /
zero-runtime 검증.

3. Airbnb — 프론트엔드 타입 안전 (JS → TS 마이그레이션)

사용 기술: 점진적 strict 도입, codemod, allowJs, tsc-noEmit

Airbnb는 수백만 줄 JavaScript를 단계적으로 TS로 전환한 사례를 공개했습니다. 한 번에 바꾸지 않고 파일별 점진적 도입이 핵심입니다.

🟢 기초

📋 코드 (3줄)
JS 파일을 TS로 바꾸는 가장 작은 단계를 알려줘.
.js → .ts 변경 + 함수 시그니처에 타입 추가만으로
시작하는 예시.

🟡 중급

📋 코드 (3줄)
JS → TS 마이그레이션 전략을 단계별로 정리해줘.
1) allowJs / 2) any 우선 / 3) strict 점진 도입 /
4) codemod로 일괄 변환. 각 단계의 위험과 측정 지표.

🔵 심화

📋 코드 (3줄)
100만 줄 JS 코드베이스의 TS 마이그레이션 로드맵을 설계해줘.
포함: tsconfig 분할 / per-file 옵션 / CI 게이트 /
팀별 진척 측정 / 점진적 strict / 롤백 전략.

4. Stripe — API SDK (타입 기반 개발자 경험)

사용 기술: 자동 생성 타입, OpenAPI → TS, JSDoc, 디스크리미네이터

Stripe SDK는 'TS를 안 쓰는 개발자도 쓰고 싶게 만드는' 기준점입니다. API 스펙에서 타입을 자동 생성해 항상 최신 상태를 유지합니다.

🟢 기초

📋 코드 (3줄)
Stripe SDK 사용 예시(stripe.charges.create)에서
타입 자동완성이 어떻게 도움이 되는지
실수 예시 vs 자동완성 예시로 비교.

🟡 중급

📋 코드 (3줄)
OpenAPI 스펙에서 TS 타입을 자동 생성하는 흐름을 만들어줘.
openapi-typescript 사용 + 타입 안전 fetch 래퍼 +
에러 응답까지 디스크리미네이터로 분기.

🔵 심화

📋 코드 (3줄)
Stripe 수준 SDK 개발자 경험(DX)을 설계해줘.
포함: 자동 생성 / JSDoc 풍부화 / 디프리케이션 표시 /
버전 호환성 / TS·JS 동시 지원 / Tree-shakable.

5. Vercel — Next.js 에코시스템 (TS 퍼스트)

사용 기술: Next.js의 강한 TS 통합, 자동 라우트 타입, env 타입

Vercel/Next.js는 TS 퍼스트 프레임워크입니다. 라우트 파라미터·환경변수·검색 파라미터 모두 자동 타입화됩니다.

🟢 기초

📋 코드 (2줄)
Next.js에서 페이지 props의 params/searchParams 타입을
어떻게 정의하는지 예시 코드로 보여줘.

🟡 중급

📋 코드 (3줄)
Zod로 환경변수 + 폼 입력 + API 요청을
런타임 검증 + 컴파일 타입 동시 확보하는
패턴을 코드로 보여줘.

🔵 심화

📋 코드 (3줄)
Next.js + tRPC + Zod + Prisma 풀스택을 설계해줘.
포함: DB 스키마 → 클라이언트 자동 타입 / Server Actions /
edge runtime 호환 / 캐시·재검증 전략.

💡 기업 TS의 공통 원칙

원칙설명기업
strict 모드모든 옵션 켜기MS, Stripe
디스크리미네이터유니온 분기 안전Slack, Stripe
점진적 도입한 번에 바꾸지 않기Airbnb
자동 생성스펙 → 타입Stripe, tRPC
모노레포 타입 공유패키지 간 일관성MS, Slack

💻 5가지 기법 미니 데모

TYPESCRIPT📋 코드 (56줄)
// 기업 TS 기법 5가지 — 미니 데모

// 1. MS: strict 모드 + 모듈 경계
// tsconfig.json: { "strict": true, "noUncheckedIndexedAccess": true }
function safeGet<T>(arr: T[], i: number): T | undefined {
  return arr[i]; // strict 옵션으로 자동으로 T | undefined로 좁혀짐
}

// 2. Slack: IPC Discriminated Union
type IpcMessage =
  | { type: 'open-file'; path: string }
  | { type: 'save-file'; path: string; content: string }
  | { type: 'delete-file'; path: string };

function handle(msg: IpcMessage) {
  switch (msg.type) {
    case 'open-file': return readFile(msg.path);
    case 'save-file': return writeFile(msg.path, msg.content);
    case 'delete-file': return removeFile(msg.path);
    // 새 타입 추가 시 컴파일 에러 → 안전
  }
}
declare function readFile(p: string): unknown;
declare function writeFile(p: string, c: string): unknown;
declare function removeFile(p: string): unknown;

// 3. Airbnb: 점진적 마이그레이션 (allowJs)
// tsconfig: { "allowJs": true, "checkJs": false }
// .js 파일은 그대로 두고 .ts 파일부터 점진적 도입

// 4. Stripe: Zod로 런타임 + 컴파일 타입 동시 확보
import { z } from 'zod';
const Charge = z.object({
  id: z.string(),
  amount: z.number().positive(),
  currency: z.enum(['usd', 'krw']),
});
type Charge = z.infer<typeof Charge>; // {id: string; amount: number; currency: 'usd' | 'krw'}

async function fetchCharge(id: string): Promise<Charge> {
  const res = await fetch(`/api/charges/${id}`);
  return Charge.parse(await res.json()); // 런타임 검증 + 타입 자동
}

// 5. Vercel: Next.js 페이지 props 자동 타입
// app/posts/[id]/page.tsx
interface PageProps {
  params: { id: string };
  searchParams: { [key: string]: string | string[] | undefined };
}
async function Page({ params }: PageProps) {
  // params.id는 자동으로 string 타입
  return null;
}

// 💡 이 5가지 패턴만 잘 써도 대규모 TS 프로젝트의 안전성 80%는 확보됩니다.

AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

Microsoft, Slack, Airbnb, Stripe, Vercel의 TS 사용 패턴에서
공통적으로 쓰이는 타입 설계·제네릭 활용 기법을 분석해줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

TS로 만든 실전 서비스 사례를
SaaS/라이브러리/디자인시스템 3유형 × 3개씩
실제 회사 이름과 함께 보여줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

Microsoft·Slack·Airbnb·Stripe·Vercel의 TS 코드를
타입 엄격도, 제네릭 활용, 빌드 시간 측면에서
비교 리포트로 만들어줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

2026년 한국 채용 시장에서
TS 능력이 React·Node 개발자 연봉에
실제로 얼마나 영향을 주는지 솔직히 알려줘.

⭐ 이것만 기억하세요
TypeScript로 만드는 대표기업 서비스 이 3가지만 확실히 잡으세요
1.MS(VS Code)·Slack(Electron IPC)·Airbnb(점진적 마이그레이션)·Stripe(자동 SDK)·Vercel(Next.js) — 세계적 TS 기법
2.5가지 패턴(strict / Discriminated Union / 점진 도입 / Zod 검증 / 자동 생성)으로 대규모 안전성 80% 확보
3.다음 챕터에서 11개 AI 프롬프트로 TS 학습 200% 가속


공유하기
진행도 3 / 34