
typescript
Use TypeScript for type-safe JavaScript: types, interfaces, generics, narrowing, tsconfig, modules, and strict mode. Use when writing or reviewing TypeScript, configuring tsconfig.json, defining types or interfaces, generics, type inference, or when the user mentions TypeScript, TS, or type checking.
- Installs
- 59
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/enderpuentes/ai-agent-skills --skill typescript- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads typescript automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
TypeScript
Overview
TypeScript is JavaScript with static typing. It adds a compile-time type checker; runtime behavior is JavaScript. Learning JavaScript applies to TypeScript for runtime tasks (e.g. sorting a list, DOM, async). Use TypeScript for types, interfaces, generics, and better tooling.
Core idea: Types describe shape and contracts; the compiler catches type errors before run time. Enable strict in tsconfig.json as a best practice.
Quick reference
| Concept | Syntax / note |
|---|---|
| Type annotation | let x: string, function f(n: number): void |
| Interface | interface User { name: string; id: number } |
| Type alias | type Id = string | number |
| Union | string or number (union types) |
| Optional | prop?: string or prop: string | undefined |
| Generics | function id<T>(x: T): T { return x } |
| Infer type from schema | Use library (e.g. Zod: z.infer<typeof schema>) |
Everyday types
- Primitives:
string,number,boolean,bigint,symbol. - Arrays:
number[]orArray<number>. - Any:
any— disables checking; avoid when possible. Preferunknownfor truly unknown data and narrow before use. - Type annotations (postfix):
const name: string = "x",function greet(name: string): string { return "Hi " + name }. - Object types:
{ name: string; age?: number }orinterface User { name: string; age?: number }. - Unions:
string | number; literal types:"a" | "b".
Narrowing
Narrow types with conditionals so TypeScript can infer:
- typeof:
if (typeof x === "string") { ... } - Truthiness:
if (value) { ... } - Equality:
if (x === null) { ... } - in:
if ("name" in obj) { ... } - Type guards:
function isFish(pet: Fish | Bird): pet is Fish { ... } - Discriminated unions: Use a common literal field (e.g.
kind: "circle") and switch on it.
Functions
- Signatures:
(a: string, b?: number) => boolean; void for no return value. - Overloads: Multiple call signatures + one implementation.
- Generics:
function first<T>(arr: T[]): T \| undefined. - Constraints:
function longest<T extends { length: number }>(a: T, b: T): T.
Object types & type manipulation
- Interfaces:
interface Point { x: number; y: number };extendsfor extension. - Index signatures:
[key: string]: number. - keyof:
type K = keyof User→ union of keys. - typeof:
type C = typeof config(value → type). - Indexed access:
type Name = User["name"]. - Mapped types:
type Readonly<T> = { readonly [K in keyof T]: T[K] }. - Conditional types:
type F = T extends string ? number : boolean. - Template literal types:
type E = `on${Capitalize<Event>}`. - Utility types:
Partial<T>,Required<T>,Pick<T, K>,Omit<T, K>,Record<K, V>,Exclude<T, U>,Extract<T, U>,NonNullable<T>,ReturnType<F>,Parameters<F>.
Classes
- Members:
class C { prop: number; method(): void {} }. - Constructor:
constructor(public name: string) {}(parameter property). - Implements:
class D implements I {}. - Extends:
class Child extends Parent {}. - Readonly, private, protected as needed.
Modules
- ES modules:
import { x } from "./file",export const x = 1,export type { T }. - Default export:
export default App,import App from "./App". - Namespace (legacy): Prefer ES modules.
Project configuration: tsconfig.json
- strict: Set
"strict": true(recommended). Enables strictNullChecks, noImplicitAny, strictFunctionTypes, etc. - target: e.g.
"ES2022"or"ESNext". - module: e.g.
"ESNext","NodeNext"for Node. - moduleResolution:
"bundler"(with bundler),"NodeNext"for Node. - paths:
"@/*": ["./src/*"]for path aliases. - include / exclude: Which files are compiled.
- References: Use project references for large monorepos.
See reference.md for official TSConfig Reference link.
Best practices
- Enable strict mode.
- Prefer interfaces for object shapes that may be extended; type for unions, mapped types, and aliases.
- Prefer const and readonly where possible.
- Use unknown instead of any for external data; narrow before use.
- Use generics to keep functions reusable and type-safe.
- For runtime validation + types, use a schema library (e.g. Zod) and infer types with
z.infer<typeof schema>.
Common mistakes
- any: Avoid; use
unknownand narrow, or proper types. - Non-null assertion (
!): Use sparingly; prefer narrowing or optional chaining. - Type assertions (
as): Prefer type guards or schema validation when data comes from outside. - Strict off: Keep
strict: true; fix errors rather than disabling.
Additional resources
- reference.md — Official documentation links (Handbook, Reference, TSConfig, Cheat Sheets).
- Official: https://www.typescriptlang.org/docs — Get Started, Handbook, Reference, TSConfig.
FAQ
What does the typescript skill do?
Use TypeScript for type-safe JavaScript: types, interfaces, generics, narrowing, tsconfig, modules, and strict mode. Use when writing or reviewing TypeScript, configuring tsconfig.json, defining types or interfaces, generics, type inference, or when the user mentions TypeScript, TS, or type checking.
How do I install typescript?
Run npx skills add https://github.com/enderpuentes/ai-agent-skills --skill typescript in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/typescript/ (personal) or .claude/skills/typescript/ (project).
Which AI agents can use typescript?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is typescript safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains typescript?
It is published by enderpuentes in enderpuentes/ai-agent-skills. It has 59 recorded installs.
More from enderpuentes/ai-agent-skills
pagespeed-insights
enderpuentes/ai-agent-skills
Audit web pages for performance optimization following PageSpeed Insights guidelines. Use when analyzing page performance, optimizing web applications, reviewing performance metrics, implementing Core Web Vitals improvements, or when the user mentions page speed, performance optimization, Lighthouse scores, or Core Web Vitals.
conventional-commits
enderpuentes/ai-agent-skills
Generate and validate commit messages following the Conventional Commits specification. Use when creating git commits, writing commit messages, reviewing commit history, generating changelogs, or when the user mentions commits, commit messages, semantic versioning, or changelog generation.
tailwind-css
enderpuentes/ai-agent-skills
Set up and use Tailwind CSS v4 only with Next.js (App Router), Vite, or CLI; no tailwind.config.js—theme via @theme in CSS. Use when styling with Tailwind, configuring Tailwind, installing Tailwind, utility classes, @theme, @layer, @utility, or when the user mentions Tailwind CSS or Tailwind v4.
zod
enderpuentes/ai-agent-skills
Define and use Zod schemas for TypeScript-first validation: primitives, objects, arrays, unions, refinements, transform, z.infer, parse, safeParse. Use when validating input, parsing API data, form validation with react-hook-form, or when the user mentions Zod, schema validation, or z.infer.
shadcn-ui
enderpuentes/ai-agent-skills
Install and use shadcn/ui with Tailwind v4 and Next.js (App Router), Vite, or manual setup; configure components.json, add components via CLI, theming with CSS only. Use when adding shadcn/ui, installing shadcn, using Button, Card, Dialog, Form, or other shadcn components, or when the user mentions shadcn, shadcn/ui, or Radix UI with Tailwind.
jsdoc
enderpuentes/ai-agent-skills
Write and maintain JSDoc comments for JavaScript and TypeScript APIs: functions, classes, modules, parameters, returns, examples, and TODO annotations. Use when documenting code, generating API docs, setting JSDoc conventions, or when the user mentions JSDoc tags like @param, @returns, or @todo.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.