Token导航 LogoToken导航

Agent Skill · 效率

typescript-coder(TypeScript coder 搜索)

typescript-coder 用于记录任务执行中的错误、用户纠正、经验和能力缺口,适合在 OpenClaw 中希望让 Agent 持续沉淀问题、修正和最佳实践时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

typescript-coder 是效率类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为执行命令;许可证为 MIT-0,第三方扫描已通过,按安装量在效率类的 21,003 个 Skill 里排第 4,354。

总安装 13,599周安装 561GitHub Stars 公开资料未说明下载 4,443核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
3.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:typescript-coder(TypeScript coder 搜索)
来源仓库:https://github.com/jhauga/typescript-coder
安装命令:
openclaw skills install typescript-coder
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install typescript-coder

这个 Skill 是做什么的

效率类 Skill 把重复的整理、汇总、转换工作交给助手完成,减少手工复制粘贴。

资深 TypeScript 专家协助迁移项目、优化类型定义与重构代码。掌握主流框架集成策略与性能调优技巧。typescript-coder 属于效率类 Skill,可作为该场景下的辅助能力补充。适用于遗留系统现代化改造与新项目启动阶段。输出为建议方案,最终决策需人工复核技术细节。

不提供自动代码生成,侧重架构指导与风险评估。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install typescript-coder;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要执行命令,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

typescript-coder 怎么安装?

在终端执行 openclaw skills install typescript-coder。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

typescript-coder 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

typescript-coder 需要什么权限?

权限级别是执行命令。安装流程涉及命令执行,可能通过 openclaw skills install typescript-coder 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

typescript-coder 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

typescript-coder 用的人多吗?

公开数据是累计安装 13,599 次,近一周安装 561 次,下载 4,443 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

typescript-coder 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要执行命令,装到常用环境前要先评估影响面。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理效率类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 不能接受 Skill 在你机器上执行命令的人。
  • 需要厂商级技术支持和 SLA 的生产系统。

效率类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
github

GitHub 代码协作 · OpenClaw

7,632,918545需要联网MIT-0通过
nano-pdf

Nano PDF 文档 · OpenClaw

4,249,476231需要联网MIT-0通过
auto-updater

自动更新程序 · OpenClaw

2,964,063386操作浏览器MIT-0通过
video-frames

视频帧 · OpenClaw

2,621,304112需要联网MIT-0通过
gemini

Gemini 助手 · OpenClaw

2,547,39648需要联网MIT-0有提醒
typescript-coder

TypeScript coder 搜索 · 本页

13,599—执行命令MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
typescript-coder
description
Expert 10x engineer with extensive knowledge of TypeScript fundamentals, migration strategies, and best practices. Use when asked to "add TypeScript", "migrate to TypeScript", "add type checking", "create TypeScript config", "fix TypeScript errors", or work with .ts/.tsx files. Supports JavaScript to TypeScript migration, JSDoc type annotations, tsconfig.json configuration, and type-safe code patterns.

TypeScript Coder Skill

Master TypeScript development with expert-level knowledge of type systems, migration strategies, and modern JavaScript/TypeScript patterns. This skill transforms you into a 10x engineer capable of writing type-safe, maintainable code and migrating existing JavaScript projects to TypeScript with confidence.

When to Use This Skill

  • User asks to "add TypeScript", "migrate to TypeScript", or "convert to TypeScript"
  • Need to "add type checking" or "fix TypeScript errors" in a project
  • Creating or configuring tsconfig.json for a project
  • Working with .ts, .tsx, .mts, or .d.ts files
  • Adding JSDoc type annotations to JavaScript files
  • Debugging type errors or improving type safety
  • Setting up TypeScript in a Node.js or JavaScript project
  • Creating type definitions or ambient declarations
  • Implementing advanced TypeScript patterns (generics, conditional types, mapped types)

Prerequisites

  • Basic understanding of JavaScript (ES6+)
  • Node.js and npm/yarn installed (for TypeScript compilation)
  • Familiarity with the project structure and build tools
  • Access to the typescript package (can be installed if needed)

Shorthand Keywords

Keywords to trigger this skill as if using a command-line tool:

openPrompt = ["typescript-coder", "ts-coder"]

Use these shorthand commands to quickly invoke TypeScript expertise without lengthy explanations. For example:

  • typescript-coder --check "this code"
  • typescript-coder check this type guard
  • ts-coder migrate this file
  • ts-coder --migrate project-to-typescript

Role and Expertise

As a TypeScript expert, you operate with:

  • Deep Type System Knowledge: Understanding of TypeScript's structural type system, generics, and advanced types
  • Migration Expertise: Proven strategies for incremental JavaScript to TypeScript migration
  • Best Practices: Knowledge of TypeScript patterns, conventions, and anti-patterns
  • Tooling Mastery: Configuration of TypeScript compiler, build tools, and IDE integration
  • Problem Solving: Ability to resolve complex type errors and design type-safe architectures

Core TypeScript Concepts

The TypeScript Type System

TypeScript uses structural typing (duck typing) rather than nominal typing:

interface Point {
  x: number;
  y: number;
}

// This works because the object has the right structure
const point: Point = { x: 10, y: 20 };

// This also works - structural compatibility
const point3D = { x: 1, y: 2, z: 3 };
const point2D: Point = point3D;  // OK - has x and y

Type Inference

TypeScript infers types when possible, reducing boilerplate:

// Type inferred as string
const message = "Hello, TypeScript!";

// Type inferred as number
const count = 42;

// Type inferred as string[]
const names = ["Alice", "Bob", "Charlie"];

// Return type inferred as number
function add(a: number, b: number) {
  return a + b;  // Returns number
}

Key TypeScript Features

FeaturePurposeWhen to Use
InterfacesDefine object shapesDefining data structures, API contracts
Type AliasesCreate custom typesUnion types, complex types, type utilities
GenericsType-safe reusable componentsFunctions/classes that work with multiple types
EnumsNamed constantsFixed set of related values
Type GuardsRuntime type checkingNarrowing union types safely
Utility TypesTransform typesPartial<T>, Pick<T, K>, Omit<T, K>, etc.

Step-by-Step Workflows

Task 1: Install and Configure TypeScript

For a new or existing JavaScript project:

  1. Install TypeScript as a dev dependency:
   npm install --save-dev typescript
  1. Install type definitions for Node.js (if using Node.js):
   npm install --save-dev @types/node
  1. Initialize TypeScript configuration:
   npx tsc --init
  1. Configure tsconfig.json for your project:
   {
     "compilerOptions": {
       "target": "ES2020",
       "module": "commonjs",
       "lib": ["ES2020"],
       "outDir": "./dist",
       "rootDir": "./src",
       "strict": true,
       "esModuleInterop": true,
       "skipLibCheck": true,
       "forceConsistentCasingInFileNames": true,
       "resolveJsonModule": true,
       "declaration": true,
       "declarationMap": true,
       "sourceMap": true
     },
     "include": ["src/**/*"],
     "exclude": ["node_modules", "dist"]
   }
  1. Add build script to package.json:
   {
     "scripts": {
       "build": "tsc",
       "dev": "tsc --watch",
       "check": "tsc --noEmit"
     }
   }

Task 2: Migrate JavaScript to TypeScript (Incremental Approach)

Safe, incremental migration strategy:

  1. Enable TypeScript to process JavaScript files:
   {
     "compilerOptions": {
       "allowJs": true,
       "checkJs": false,
       "noEmit": true
     }
   }
  1. Add JSDoc type annotations to JavaScript files (optional intermediate step):
   // @ts-check

   /**
    * Calculates the sum of two numbers
    * @param {number} a - First number
    * @param {number} b - Second number
    * @returns {number} The sum
    */
   function add(a, b) {
     return a + b;
   }

   /** @type {string[]} */
   const names = ["Alice", "Bob"];

   /** @typedef {{ id: number, name: string, email?: string }} User */

   /** @type {User} */
   const user = {
     id: 1,
     name: "Alice"
   };
  1. Rename files incrementally from .js to .ts:
   # Start with utility files and leaf modules
   mv src/utils/helpers.js src/utils/helpers.ts
  1. Fix TypeScript errors in converted files:

- Add explicit type annotations where inference fails - Define interfaces for complex objects - Handle any types appropriately - Add type guards for runtime checks

  1. Gradually convert remaining files:

- Start with utilities and shared modules - Move to leaf components (no dependencies) - Finally convert orchestration/entry files

  1. Enable strict mode progressively:
   {
     "compilerOptions": {
       "strict": false,
       "noImplicitAny": true,
       "strictNullChecks": true
       // Enable other strict flags one at a time
     }
   }

Task 3: Define Types and Interfaces

Creating robust type definitions:

  1. Define interfaces for data structures:
   // User data model
   interface User {
     id: number;
     name: string;
     email: string;
     age?: number;  // Optional property
     readonly createdAt: Date;  // Read-only property
   }

   // API response structure
   interface ApiResponse<T> {
     success: boolean;
     data?: T;
     error?: {
       code: string;
       message: string;
     };
   }
  1. Use type aliases for complex types:
   // Union type
   type Status = 'pending' | 'active' | 'completed' | 'failed';

   // Intersection type
   type Employee = User & {
     employeeId: string;
     department: string;
     salary: number;
   };

   // Function type
   type TransformFn<T, U> = (input: T) => U;

   // Conditional type
   type NonNullable<T> = T extends null | undefined ? never : T;
  1. Create type definitions in .d.ts files for external modules:
   // types/custom-module.d.ts
   declare module 'custom-module' {
     export interface Config {
       apiKey: string;
       timeout?: number;
     }

     export function initialize(config: Config): Promise<void>;
     export function fetchData<T>(endpoint: string): Promise<T>;
   }

Task 4: Work with Generics

Type-safe reusable components:

  1. Generic functions:
   // Basic generic function
   function identity<T>(value: T): T {
     return value;
   }

   const num = identity(42);        // Type: number
   const str = identity("hello");   // Type: string

   // Generic with constraints
   function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
     return obj[key];
   }

   const user = { name: "Alice", age: 30 };
   const name = getProperty(user, "name");  // Type: string
   const age = getProperty(user, "age");    // Type: number
  1. Generic classes:
   class DataStore<T> {
     private items: T[] = [];

     add(item: T): void {
       this.items.push(item);
     }

     get(index: number): T | undefined {
       return this.items[index];
     }

     filter(predicate: (item: T) => boolean): T[] {
       return this.items.filter(predicate);
     }
   }

   const numberStore = new DataStore<number>();
   numberStore.add(42);

   const userStore = new DataStore<User>();
   userStore.add({ id: 1, name: "Alice", email: "alice@example.com" });
  1. Generic interfaces:
   interface Repository<T> {
     findById(id: string): Promise<T | null>;
     findAll(): Promise<T[]>;
     create(item: Omit<T, 'id'>): Promise<T>;
     update(id: string, item: Partial<T>): Promise<T>;
     delete(id: string): Promise<boolean>;
   }

   class UserRepository implements Repository<User> {
     async findById(id: string): Promise<User | null> {
       // Implementation
       return null;
     }
     // ... other methods
   }

Task 5: Handle Type Errors

Common type errors and solutions:

  1. "Property does not exist" errors:
   // ❌ Error: Property 'name' does not exist on type '{}'
   const user = {};
   user.name = "Alice";

   // ✅ Solution 1: Define interface
   interface User {
     name: string;
   }
   const user: User = { name: "Alice" };

   // ✅ Solution 2: Type assertion (use cautiously)
   const user = {} as User;
   user.name = "Alice";

   // ✅ Solution 3: Index signature
   interface DynamicObject {
     [key: string]: any;
   }
   const user: DynamicObject = {};
   user.name = "Alice";
  1. "Cannot find name" errors:
   // ❌ Error: Cannot find name 'process'
   const env = process.env.NODE_ENV;

   // ✅ Solution: Install type definitions
   // npm install --save-dev @types/node
   const env = process.env.NODE_ENV;  // Now works
  1. any type issues:
   // ❌ Implicit any (with noImplicitAny: true)
   function process(data) {
     return data.value;
   }

   // ✅ Solution: Add explicit types
   function process(data: { value: number }): number {
     return data.value;
   }

   // ✅ Or use generic
   function process<T>(data: T): T {
     return data;
   }
  1. Union type narrowing:
   function processValue(value: string | number) {
     // ❌ Error: Property 'toUpperCase' does not exist on type 'string | number'
     return value.toUpperCase();

     // ✅ Solution: Type guard
     if (typeof value === "string") {
       return value.toUpperCase();  // TypeScript knows it's string here
     }
     return value.toString();
   }

Task 6: Configure for Specific Environments

Environment-specific configurations:

Node.js Project
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "lib": ["ES2020"],
    "types": ["node"],
    "moduleResolution": "node",
    "esModuleInterop": true
  }
}
Browser/DOM Project
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "esnext",
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "moduleResolution": "bundler",
    "resolveJsonModule": true,
    "noEmit": true
  }
}
Library/Package
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "esnext",
    "declaration": true,
    "declarationMap": true,
    "outDir": "./dist",
    "rootDir": "./src"
  }
}

TypeScript Best Practices

Do's

  • ✅ Enable strict mode ("strict": true) for maximum type safety
  • ✅ Use type inference - let TypeScript infer types when it's obvious
  • ✅ Prefer interfaces over type aliases for object shapes (better error messages)
  • ✅ Use unknown instead of any - forces type checking before use
  • ✅ Create utility types for common transformations
  • ✅ Use const assertions (as const) for literal types
  • ✅ Leverage type guards for runtime type checking
  • ✅ Document complex types with JSDoc comments
  • ✅ Use discriminated unions for type-safe state management
  • ✅ Keep types DRY - extract and reuse type definitions

Don'ts

  • ❌ Don't use any everywhere - defeats the purpose of TypeScript
  • ❌ Don't ignore TypeScript errors with @ts-ignore without good reason
  • ❌ Don't over-complicate types - balance safety with readability
  • ❌ Don't use type assertions excessively - indicates design issues
  • ❌ Don't duplicate type definitions - use shared types
  • ❌ Don't forget null/undefined checks - enable strictNullChecks
  • ❌ Don't use enums for everything - consider union types instead
  • ❌ Don't skip type definitions for external libraries - install @types/*
  • ❌ Don't disable strict flags without justification
  • ❌ Don't mix JavaScript and TypeScript in production - complete the migration

Common Patterns

Pattern 1: Discriminated Unions

Type-safe state management:

type LoadingState = { status: 'loading' };
type SuccessState<T> = { status: 'success'; data: T };
type ErrorState = { status: 'error'; error: Error };

type AsyncState<T> = LoadingState | SuccessState<T> | ErrorState;

function handleState<T>(state: AsyncState<T>) {
  switch (state.status) {
    case 'loading':
      console.log('Loading...');
      break;
    case 'success':
      console.log('Data:', state.data);  // TypeScript knows state.data exists
      break;
    case 'error':
      console.log('Error:', state.error.message);  // TypeScript knows state.error exists
      break;
  }
}

Pattern 2: Builder Pattern

Type-safe fluent API:

class QueryBuilder<T> {
  private filters: Array<(item: T) => boolean> = [];
  private sortFn?: (a: T, b: T) => number;
  private limitCount?: number;

  where(predicate: (item: T) => boolean): this {
    this.filters.push(predicate);
    return this;
  }

  sortBy(compareFn: (a: T, b: T) => number): this {
    this.sortFn = compareFn;
    return this;
  }

  limit(count: number): this {
    this.limitCount = count;
    return this;
  }

  execute(data: T[]): T[] {
    let result = data.filter(item =>
      this.filters.every(filter => filter(item))
    );

    if (this.sortFn) {
      result = result.sort(this.sortFn);
    }

    if (this.limitCount) {
      result = result.slice(0, this.limitCount);
    }

    return result;
  }
}

// Usage
const users = [/* ... */];
const result = new QueryBuilder<User>()
  .where(u => u.age > 18)
  .where(u => u.email.includes('@example.com'))
  .sortBy((a, b) => a.name.localeCompare(b.name))
  .limit(10)
  .execute(users);

Pattern 3: Type-Safe Event Emitter

type EventMap = {
  'user:created': { id: string; name: string };
  'user:updated': { id: string; changes: Partial<User> };
  'user:deleted': { id: string };
};

class TypedEventEmitter<T extends Record<string, any>> {
  private listeners: { [K in keyof T]?: Array<(data: T[K]) => void> } = {};

  on<K extends keyof T>(event: K, listener: (data: T[K]) => void): void {
    if (!this.listeners[event]) {
      this.listeners[event] = [];
    }
    this.listeners[event]!.push(listener);
  }

  emit<K extends keyof T>(event: K, data: T[K]): void {
    const eventListeners = this.listeners[event];
    if (eventListeners) {
      eventListeners.forEach(listener => listener(data));
    }
  }
}

// Usage with type safety
const emitter = new TypedEventEmitter<EventMap>();

emitter.on('user:created', (data) => {
  console.log(data.id, data.name);  // TypeScript knows the shape
});

emitter.emit('user:created', { id: '123', name: 'Alice' });  // Type-checked

Troubleshooting

IssueCauseSolution
Module not foundMissing type definitionsInstall @types/[package-name] or add declare module
Implicit any errorsnoImplicitAny enabledAdd explicit type annotations
Cannot find global typesMissing lib in compilerOptionsAdd to lib: ["ES2020", "DOM"]
Type errors in node_modulesThird-party library typesAdd skipLibCheck: true to tsconfig.json
Import errors with .ts extensionImport resolving issuesUse imports without extensions
Build takes too longCompiling too many filesUse incremental: true and tsBuildInfoFile
Type inference not workingComplex inferred typesAdd explicit type annotations
Circular dependency errorsImport cyclesRefactor to break cycles, use interfaces

Advanced TypeScript Features

Mapped Types

Transform existing types:

type Readonly<T> = {
  readonly [P in keyof T]: T[P];
};

type Partial<T> = {
  [P in keyof T]?: T[P];
};

type Pick<T, K extends keyof T> = {
  [P in K]: T[P];
};

// Usage
interface User {
  id: number;
  name: string;
  email: string;
}

type ReadonlyUser = Readonly<User>;  // All properties readonly
type PartialUser = Partial<User>;    // All properties optional
type UserNameEmail = Pick<User, 'name' | 'email'>;  // Only name and email

Conditional Types

Types that depend on conditions:

type IsString<T> = T extends string ? true : false;

type A = IsString<string>;   // true
type B = IsString<number>;   // false

// Practical example: Extract function return type
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

function getUser() {
  return { id: 1, name: "Alice" };
}

type User = ReturnType<typeof getUser>;  // { id: number; name: string }

Template Literal Types

String manipulation at type level:

type Greeting<T extends string> = `Hello, ${T}!`;

type WelcomeMessage = Greeting<"World">;  // "Hello, World!"

// Practical: Create event names
type EventName<T extends string> = `on${Capitalize<T>}`;

type ClickEvent = EventName<"click">;  // "onClick"
type HoverEvent = EventName<"hover">;  // "onHover"

TypeScript Configuration Reference

Key tsconfig.json Options

OptionPurposeRecommended
strictEnable all strict type checkingtrue
targetECMAScript target versionES2020 or higher
moduleModule systemcommonjs (Node) or esnext (bundlers)
libInclude type definitions["ES2020"] + DOM if browser
outDirOutput directory./dist
rootDirRoot source directory./src
sourceMapGenerate source mapstrue for debugging
declarationGenerate .d.ts filestrue for libraries
esModuleInteropEnable interop between CommonJS and ES modulestrue
skipLibCheckSkip type checking of .d.ts filestrue for performance
forceConsistentCasingInFileNamesEnforce consistent file casingtrue
resolveJsonModuleAllow importing JSON filestrue if needed
allowJsAllow JavaScript filestrue during migration
checkJsType check JavaScript filesfalse during migration
noEmitDon't emit files (use external bundler)true with bundlers
incrementalEnable incremental compilationtrue for faster builds

Migration Checklist

When migrating a JavaScript project to TypeScript:

Phase 1: Setup

  • [ ] Install TypeScript and @types packages
  • [ ] Create tsconfig.json with permissive settings
  • [ ] Configure build scripts
  • [ ] Set up IDE/editor TypeScript support

Phase 2: Incremental Migration

  • [ ] Enable allowJs: true and checkJs: false
  • [ ] Rename utility files to .ts
  • [ ] Add type annotations to function signatures
  • [ ] Create interfaces for data structures
  • [ ] Fix TypeScript errors in converted files

Phase 3: Strengthen Types

  • [ ] Enable noImplicitAny: true
  • [ ] Enable strictNullChecks: true
  • [ ] Remove any types where possible
  • [ ] Add type guards for union types
  • [ ] Create type definitions for external modules

Phase 4: Full Strict Mode

  • [ ] Enable strict: true
  • [ ] Fix all remaining type errors
  • [ ] Remove JSDoc annotations (now redundant)
  • [ ] Optimize type definitions
  • [ ] Document complex types

Phase 5: Maintenance

  • [ ] Set up pre-commit type checking
  • [ ] Configure CI/CD type checking
  • [ ] Establish code review standards for types
  • [ ] Keep TypeScript and @types packages updated

References

This skill includes bundled reference documentation for TypeScript essentials.

Reference Documentation (references/)

Core Concepts & Fundamentals
  • basics.md - TypeScript fundamentals, simple types, type inference, and special types
  • essentials.md - Core TypeScript concepts every developer should know
  • cheatsheet.md - Quick reference for control flow, classes, interfaces, types, and common patterns
Type System & Language Features
  • types.md - Advanced types, conditional types, mapped types, type guards, and recursive types
  • classes.md - Class syntax, inheritance, generics, and utility types
  • elements.md - Arrays, tuples, objects, enums, functions, and casting
  • keywords.md - keyof, null handling, optional chaining, and template literal types
  • miscellaneous.md - Async programming, promises, decorators, and JSDoc integration

External Resources

Summary

The TypeScript Coder skill empowers you to write type-safe, maintainable code with expert-level TypeScript knowledge. Whether migrating existing JavaScript projects or starting new TypeScript projects, apply these proven patterns, workflows, and best practices to deliver production-quality code with confidence.

Remember: TypeScript is a tool for developer productivity and code quality. Use it to catch errors early, improve code documentation, and enable better tooling—but don't let perfect types prevent shipping working code.

平台分布

OpenClaw

94.99%
按下载量换算4,220

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

执行命令

安装流程涉及命令执行,可能通过 openclaw skills install typescript-coder 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills