---
id: wiki-2026-0508-definitelytyped
title: DefinitelyTyped
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: ["@types", DT, DefinitelyTyped repo]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [typescript, types, ecosystem, npm]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: TypeScript
  framework: none
---

# DefinitelyTyped

## 매 한 줄
> **"매 untyped JavaScript 의 community-maintained TypeScript declaration 의 monorepo"**. `@types/*` npm scope 의 publish 되며, 8000+ package 의 cover. 2026 의 매 native-TS shift (`exports`/`types` field) 의 점진적 의 X — 매 still backbone 의 legacy ecosystem.

## 매 핵심

### 매 작동
- GitHub `DefinitelyTyped/DefinitelyTyped` repo 의 매 `types/<package>/index.d.ts` 의 hosting.
- types-publisher bot 의 매 commit 의 `@types/<package>` 의 npm publish.
- TypeScript 의 매 `node_modules/@types/*` 의 auto-include (tsconfig `types` field 의 absence).

### 매 declaration 의 구조
- `index.d.ts` — main declaration.
- `package.json` — version, dependencies (other `@types`).
- `tests/<pkg>-tests.ts` — type 의 verify 의 sample 의 compile.
- `tsconfig.json` — strict mode + lib version.

### 매 modern shift (2026)
- 매 popular library 의 매 inline TS (`exports.types`) 의 ship — `@types/*` 의 unnecessary.
- DT 의 매 long-tail / abandoned package 의 still 의 critical.
- TypeScript Reference Types 의 매 alternative ecosystem 의 emerging.

### 매 응용
1. Untyped npm package 의 type 의 add.
2. Global type (jQuery 의 `$`, Node `process`) 의 declare.
3. Module augmentation (express `Request` 의 add field).
4. Ambient module (`declare module "*.svg"`).

## 💻 패턴

### Install + 사용
```bash
npm install lodash
npm install --save-dev @types/lodash
```

```ts
import _ from "lodash";
const grouped = _.groupBy([1, 2, 3, 4], (n) => n % 2);
//    ^? Dictionary<number[]>
```

### Version 의 align
```json
{
  "dependencies": { "lodash": "^4.17.21" },
  "devDependencies": { "@types/lodash": "^4.17.21" }
}
```
매 major.minor 의 같은 의 keep — 매 type drift 의 risk.

### Type 의 X 의 fallback
```ts
// types/legacy-lib.d.ts
declare module "legacy-lib" {
  export function doStuff(x: string): number;
  export const VERSION: string;
}
```

```jsonc
// tsconfig.json
{
  "compilerOptions": {
    "paths": { "*": ["types/*"] }
  }
}
```

### Quick stub (any)
```ts
declare module "untyped-lib";  // 매 entire module 의 any
```
매 explicit narrow 보다 의 worst — but 의 match-and-go 의 valid.

### Module augmentation
```ts
// types/express-augment.d.ts
import "express";

declare module "express-serve-static-core" {
  interface Request {
    user?: { id: string; email: string };
  }
}
```

### Global declaration
```ts
// types/globals.d.ts
declare global {
  interface Window {
    __APP_VERSION__: string;
  }

  var __DEV__: boolean;
}

export {};  // 매 file 의 module 의 의 essential
```

### Asset module declaration
```ts
// types/assets.d.ts
declare module "*.svg" {
  const content: React.FC<React.SVGProps<SVGSVGElement>>;
  export default content;
}

declare module "*.png" {
  const src: string;
  export default src;
}
```

### DT 의 contribute
```bash
git clone https://github.com/DefinitelyTyped/DefinitelyTyped
cd DefinitelyTyped/types
mkdir my-lib
# index.d.ts, tsconfig.json, package.json, my-lib-tests.ts 의 작성
npm test
# PR 의 submit
```

### 매 inline types (modern alternative)
```jsonc
// my-lib package.json
{
  "name": "my-lib",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.mjs",
      "require": "./dist/index.cjs"
    }
  }
}
```
매 native ship 의 `@types/*` 의 X 의 필요.

## 매 결정 기준
| 상황 | Approach |
|---|---|
| Library 의 native types 의 ship | nothing 의 install — 의 just import |
| Library 의 untyped, popular | `npm i -D @types/<pkg>` |
| `@types/*` 의 X 의 (long-tail) | 매 local `.d.ts` 의 작성 + `paths` |
| Quick prototype | `declare module "x";` (any) |
| Library 의 publish | 매 native `types` field 의 ship — DT 의 contribute X |

**기본값**: 매 `@types/*` 의 first 의 try, fallback 의 local `.d.ts`.

## 🔗 Graph
- 부모: [[TypeScript]]
- Adjacent: [[tsconfig.json]] · [[Declaration Files]]

## 🤖 LLM 활용
**언제**: untyped library 의 type 의 add, module augmentation, asset module declaration.
**언제 X**: library 의 매 already 의 inline types 의 ship — `@types/*` 의 install 의 conflict 의 cause.

## ❌ 안티패턴
- **Version mismatch**: `@types/lodash@3` + `lodash@4` — 매 wrong type.
- **Both inline + DT install**: 매 conflict — 매 module resolution 의 confused.
- **`declare module "x";` 의 production 의 ship**: 매 effectively `any` 의 entire library.
- **DT PR 의 의 X 의 — local 의만 keep**: 매 update 의 manual.

## 🧪 검증 / 중복
- Verified (DefinitelyTyped repo, TypeScript handbook, npm `@types` scope, types-publisher).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — augmentation + asset module + 2026 inline-types shift 추가 |
