# 공통 에러

In this section we explain a number of common error codes that users experience in the real world.

## TS2304

Samples:

> `Cannot find name ga` `Cannot find name $` `Cannot find module jquery`

You are probably using a third party library (e.g. google analytics) and don't have it `declare`d. TypeScript tries to save you from *spelling mistakes* and *using variables without declaring them* so you need to be explicit on anything that is *available at runtime* because of you including some external library ([more on how to fix it](https://radlohead.gitbook.io/typescript-deep-dive/type-system/intro/d.ts)).

## TS2307

Samples:

> `Cannot find module 'underscore'`

You are probably using a third party library (e.g. underscore) as a *module* ([more on modules](https://radlohead.gitbook.io/typescript-deep-dive/project/modules)) and don't have the ambient declaration file for it ([more on ambient declarations](https://radlohead.gitbook.io/typescript-deep-dive/type-system/intro/d.ts)).

## TS1148

Sample:

> Cannot compile modules unless the '--module' flag is provided

Checkout the [section on modules](https://radlohead.gitbook.io/typescript-deep-dive/project/modules).

## Catch clause variable cannot have a type annotation

Sample:

```javascript
try { something(); }
catch (e: Error) { // Catch clause variable cannot have a type annotation
}
```

TypeScript is protecting you from JavaScript code in the wild being wrong. Use a type guard instead:

```javascript
try { something(); }
catch (e) {
  if (e instanceof Error){
    // Here you go.
  }
}
```

## Interface `ElementClass` cannot simultaneously extend types `Component` and `Component`

This happens when you have two `react.d.ts` (`@types/react/index.d.ts`) in the compilation context.

**Fix**:

* Delete `node_modules` and any `package-lock` (or yarn lock) and `npm install` again.
* If it doesn't work, find the invalid module (all modules used by your project should have `react.d.ts` as a `peerDependency` and not a hard `dependency`) and report it on their project.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://radlohead.gitbook.io/typescript-deep-dive/main/common-errors.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
