
Mistral Small 4 리뷰: 119B MoE 오픈소스 모델이 GPT-OSS 120B를 40% 낮은 지연시간으로 따라잡은 방법
3월 27, 2026
워너 뮤직·베인 캐피탈, 레드 핫 칠리 페퍼스 카탈로그 3억 달러 인수 추진 — 16.5억 달러 JV 펀드의 음악 권리 시장 재편
3월 27, 20262026년 3월 23일, TypeScript 6.0이 정식 릴리스되었습니다. 단순한 마이너 업데이트가 아닙니다. JavaScript로 작성된 TypeScript 컴파일러의 마지막 버전이기 때문입니다. 다음 버전인 7.0은 Go 언어로 완전히 재작성됩니다. Sentry 코드베이스의 컴파일 시간이 133초에서 16초로 — 10.2배 빨라집니다. 하지만 그 혜택을 누리려면 6.0이 쏟아내는 폐기(deprecation) 경고부터 해결해야 합니다.

TypeScript 6.0 기본값 변경: strict가 기본으로 true
TypeScript 6.0에서 가장 체감이 큰 변경점은 strict: true가 기본값이 되었다는 것입니다. 지금까지 tsconfig에서 명시적으로 strict를 활성화하지 않았던 프로젝트라면, 업그레이드 즉시 strictNullChecks, strictFunctionTypes, strictBindCallApply 등 모든 strict 플래그가 자동 적용됩니다. 신규 프로젝트에는 좋은 소식이지만, 레거시 코드베이스에는 IDE가 빨간 밑줄 파티가 될 수 있습니다.
모듈 기본값도 esnext로 변경되었고, target은 es2025로 부상합니다. types 필드는 빈 배열 []이 기본값이 되어, node_modules의 모든 @types 패키지를 자동으로 끌어오던 동작이 사라졌습니다. 이제 필요한 타입만 명시적으로 선언해야 합니다.
// tsconfig.json — TypeScript 6.0 새 기본값
{
"compilerOptions": {
// 이제 아래가 암묵적 기본값:
// "strict": true,
// "module": "esnext",
// "target": "es2025",
// "types": [],
// "rootDir": ".",
// @types 패키지를 명시적으로 선언해야 합니다:
"types": ["node", "jest"]
}
}
TypeScript 6.0 신기능: Temporal API, ES2025, Map Upsert
25년 넘게 JavaScript 개발자들을 괴롭혀온 Date() 객체의 한계를 드디어 넘을 수 있게 되었습니다. TypeScript 6.0은 Temporal API의 내장 타입 정의를 포함합니다. 이 Stage 3 제안은 불변 날짜/시간 객체, 올바른 타임존 처리, 캘린더 시스템 지원, 나노초 정밀도를 제공하며 — TypeScript의 완전한 타입 안전성이 기본 제공됩니다.
// Temporal API — 드디어 제대로 된 날짜 처리
const now = Temporal.Now.zonedDateTimeISO();
const meeting = Temporal.ZonedDateTime.from({
timeZone: "Asia/Seoul",
year: 2026, month: 4, day: 15,
hour: 14, minute: 30
});
// Date()의 악몽 없이 시간 계산
const duration = now.until(meeting);
console.log(duration.total("hours")); // 남은 시간 정확히 계산
// getTime() 해킹 없이 날짜 비교
const isBeforeMeeting = Temporal.ZonedDateTime.compare(now, meeting) < 0;
새로운 es2025 target과 lib은 RegExp.escape()를 포함합니다 — 정규식 특수문자를 안전하게 이스케이프하는 유틸리티로, 그동안 Stack Overflow에서 복붙하던 코드를 대체합니다. Promise.try()와 새로운 Iterator 헬퍼 메서드도 이번 릴리스에 포함되었습니다.
// RegExp.escape() — 수동 이스케이프 불필요
const userInput = "가격: $100 (50% 할인)";
const escaped = RegExp.escape(userInput);
const regex = new RegExp(escaped);
// Map upsert — 기본값 패턴 간소화
const cache = new Map<string, number[]>();
cache.getOrInsert("users", []).push(42);
// 이전: if (!cache.has("users")) cache.set("users", []);
Map과 WeakMap에 getOrInsert()와 getOrInsertComputed() 메서드가 추가되어, 캐싱 구현마다 반복되던 has-check-then-set 패턴을 제거할 수 있습니다. 보일러플레이트가 줄고, 버그도 줄어듭니다.
폐기 대란: TypeScript 6.0이 제거하는 것들
여기서부터 고통이 시작됩니다. TypeScript 6.0은 언어 역사상 가장 공격적인 폐기 목록을 담고 있습니다. 여기서 폐기된 모든 것은 7.0에서 완전히 삭제됩니다. tsconfig에 "ignoreDeprecations": "6.0"을 설정해서 경고를 억제할 수 있지만, 그건 유예 기간이지 해결책이 아닙니다.

TypeScript 6.0에서 사라지는 것들:
target: es5— 폐기 예정. 2026년에 아직 ES5로 트랜스파일링하고 있다면, 이제 놓아줄 때입니다. es2015+ 또는 Babel 같은 외부 컴파일러를 사용하세요.--outFile— 완전 삭제. 연결 기반 번들링은 끝났습니다. Webpack, Rollup, esbuild, Vite를 사용하세요.module: amd,umd,systemjs— 삭제. ESM이 승리했습니다. 네이티브 ESM과 번들러를 사용하세요.--moduleResolution node(node10)과classic— 폐기/삭제.nodenext또는bundler를 사용하세요.--baseUrl— 폐기. 베이스 경로를paths항목에 직접 넣으세요.esModuleInterop: false— 더 이상 허용 안 됨. 항상 활성화 상태입니다.module Foo {}네임스페이스 구문 — 하드 폐기.namespace Foo {}를 사용하세요.- Import
asserts키워드 — 폐기. import 속성에with를 사용하세요.
stableTypeOrdering 플래그: TypeScript 7.0으로의 다리
TypeScript 6.0에서 전략적으로 가장 중요한 추가 사항은 새 기능이 아니라 진단 플래그입니다. --stableTypeOrdering은 6.0 컴파일러가 Go 기반 7.0 컴파일러와 동일한 결정적 순서로 타입을 출력하도록 강제합니다. 이를 통해 실제 마이그레이션 전에 호환성 문제를 미리 발견할 수 있습니다.
// tsconfig.json에서 7.0 호환성 테스트 활성화
{
"compilerOptions": {
"stableTypeOrdering": true
}
}
// 주의: 컴파일 성능이 최대 25% 감소할 수 있음
// 테스트용으로만 사용, 프로덕션 빌드에는 비추천
Microsoft의 공식 발표에 따르면, TypeScript 7.0은 "완성에 매우 가까운" 상태이며 이미 npm 프리뷰로 사용할 수 있습니다. Go 기반 tsgo 컴파일러는 놀라운 성능 향상을 보여줍니다 — Sentry 코드베이스가 133초에서 단 16초로 떨어집니다. 10.2배 속도 향상은 마이크로벤치마크 트릭이 아니라 실제 프로덕션 수준의 컴파일 결과입니다.
TypeScript 6.0 마이그레이션 가이드: 단계별 생존 전략
당황하지 마세요. 솔로 프로젝트든 500개 패키지의 모노레포든, 실용적인 마이그레이션 경로를 정리했습니다.
1단계: ignoreDeprecations 추가 (임시 조치)
{
"compilerOptions": {
"ignoreDeprecations": "6.0"
}
}
이 설정은 모든 폐기 에러를 억제해서 CI 파이프라인 중단 없이 컴파일러를 업그레이드할 수 있게 합니다. 하지만 마감 기한으로 취급하세요 — 이 탈출구는 7.0에서 사라집니다.
2단계: types 필드 수정
// 이전 (자동 열거, 위험할 수 있음)
// types 필드 없음 — TS가 모든 @types를 자동 포함
// 이후 (명시적, 제어 가능)
{
"compilerOptions": {
"types": ["node", "jest", "express"]
}
}
3단계: 모듈 해석과 임포트 업데이트
// tsconfig.json
{
"compilerOptions": {
"moduleResolution": "bundler",
"paths": {
"@app/*": ["./src/app/*"],
"@lib/*": ["./src/lib/*"]
}
}
}
// 임포트 구문 업데이트 (esModuleInterop 항상 활성화)
import express from "express";
// import * as express from "express"; // 더 이상 불필요
4단계: stableTypeOrdering으로 테스트
코드베이스가 6.0에서 깨끗하게 컴파일되면, stableTypeOrdering을 활성화하고 전체 테스트 스위트를 실행하세요. 타입 순서에 의존하는 테스트가 깨지면 7.0에서도 깨집니다. JavaScript 컴파일러가 백업으로 남아있는 지금 수정하세요.
지금 TypeScript 6.0으로 업그레이드해야 할까요?
네, 빠를수록 좋습니다. TypeScript 6.0은 명시적으로 마이그레이션 활주로로 설계되었습니다. 모든 폐기 사항은 7.0에서 완전 삭제될 내용의 미리보기입니다. 기다리면 7.0이 나올 때 모든 마이그레이션 고통을 한 번에 압축해서 받게 됩니다.
엔터프라이즈 팀에게는 계산이 더 명확합니다. Go 기반 컴파일러의 10배 성능 향상은 CI/CD 파이프라인 시간을 대폭 단축하고, 개발자 대기 시간을 줄이며, 대규모 모노레포에서 실시간 타입 체킹을 가능하게 합니다. 하지만 폐기된 패턴이 정리되어야만 그곳에 도달할 수 있습니다. InfoWorld가 보도한 바와 같이, 이번 릴리스는 근본적으로 다음을 위한 길을 닦는 것입니다.
결론: 지금 TypeScript 6.0으로 업그레이드하고, 모든 폐기 경고를 수정하고, stableTypeOrdering으로 테스트하면, 7.0이 안정화될 때 역대 가장 빠른 TypeScript 컴파일러를 사용할 준비가 됩니다. TypeScript의 JavaScript 시대는 끝나가고 있으며 — 다음에 오는 것이 훨씬 더 좋습니다.
TypeScript 마이그레이션이나 개발 파이프라인 자동화 구축이 필요하시다면, 기술 컨설팅을 통해 도움 드릴 수 있습니다.
매주 AI, 음악, 테크 트렌드를 이메일로 받아보세요.



