typescript

Const Types Pattern (REQUIRED)

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "typescript" with this command: npx skills add gentleman-programming/gentleman-skills/gentleman-programming-gentleman-skills-typescript

Const Types Pattern (REQUIRED)

// ✅ ALWAYS: Create const object first, then extract type const STATUS = { ACTIVE: "active", INACTIVE: "inactive", PENDING: "pending", } as const;

type Status = (typeof STATUS)[keyof typeof STATUS];

// ❌ NEVER: Direct union types type Status = "active" | "inactive" | "pending";

Why? Single source of truth, runtime values, autocomplete, easier refactoring.

Flat Interfaces (REQUIRED)

// ✅ ALWAYS: One level depth, nested objects → dedicated interface interface UserAddress { street: string; city: string; }

interface User { id: string; name: string; address: UserAddress; // Reference, not inline }

interface Admin extends User { permissions: string[]; }

// ❌ NEVER: Inline nested objects interface User { address: { street: string; city: string }; // NO! }

Never Use any

// ✅ Use unknown for truly unknown types function parse(input: unknown): User { if (isUser(input)) return input; throw new Error("Invalid input"); }

// ✅ Use generics for flexible types function first<T>(arr: T[]): T | undefined { return arr[0]; }

// ❌ NEVER function parse(input: any): any { }

Utility Types

Pick<User, "id" | "name"> // Select fields Omit<User, "id"> // Exclude fields Partial<User> // All optional Required<User> // All required Readonly<User> // All readonly Record<string, User> // Object type Extract<Union, "a" | "b"> // Extract from union Exclude<Union, "a"> // Exclude from union NonNullable<T | null> // Remove null/undefined ReturnType<typeof fn> // Function return type Parameters<typeof fn> // Function params tuple

Type Guards

function isUser(value: unknown): value is User { return ( typeof value === "object" && value !== null && "id" in value && "name" in value ); }

Import Types

import type { User } from "./types"; import { createUser, type Config } from "./utils";

Keywords

typescript, ts, types, interfaces, generics, strict mode, utility types

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

angular-performance

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

angular-architecture

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

angular-core

No summary provided by upstream source.

Repository SourceNeeds Review