typescript by dalestudy/skills
npx skills add https://github.com/dalestudy/skills --skill typescript基于 TypeScript 手册的类型定义与最佳实践。基础语法、类型操作、工具类型的详细内容请参考 references/ 及 Handbook。
省略不必要的注解。减少变更时的双重修改负担,且推断通常更准确。
// ❌
const name: string = "John";
const user: { name: string; age: number } = { name: "John", age: 30 };
// ✅
const name = "John";
const user = { name: "John", age: 30 };
明确函数契约,防止返回类型意外更改。公开 API 和复杂逻辑中必需。
function calculateTotal(items: Item[]): number {
return items.reduce((sum, item) => sum + item.price, 0);
}
async function fetchUser(id: string): Promise<User> {
const res = await fetch(`/api/users/${id}`);
return res.json();
}
会破坏类型安全性和自动补全。使用 unknown 加类型守卫或具体类型。
// ❌
function process(data: any) {
return data.value;
}
// ✅
function process(data: unknown): number {
if (typeof data === "object" && data !== null && "value" in data)
return (data as { value: number }).value;
throw new Error("Invalid data");
}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
T、K extends keyof T。使用 getProperty<T, K extends keyof T>(obj: T, key: K): T[K] 模式。typeof、instanceof、in 进行分支后缩小类型范围(value): value is T模板:
assets/types.guards.ts
模板:
assets/tsconfig.nextjs.tsassets/tsconfig.node.tsassets/tsconfig.react.ts
模板:
assets/types.events.ts
模板:
assets/types.utils.ts
interface,联合/交叉类型使用 type。API 描述使用名词形式编写(/** 禁用状态 */)。as const:保留字面量和对象的不变性。可像枚举一样使用 typeof obj[keyof typeof obj]。type UserId = string & { readonly brand: unique symbol } 区分相同的原始类型。as。T extends object。| 错误 | 应对 |
|---|---|
Type 'X' is not assignable to type 'Y' | 使用类型守卫分支后赋值 |
Property 'X' does not exist on type 'Y' | 扩展类型或使用 optional |
Object is possibly 'null' or 'undefined' | 使用 if (x == null) / ?. / ?? |
Argument of type 'X' is not assignable to parameter of type 'Y' | 使用泛型 T[] 或重载 |
Type 'X' cannot be used as an index type | 使用 keyof typeof obj |
调试:通过悬停确认推断,优先使用守卫、泛型、工具类型解决,as 作为最后手段。
本文档仅为参考而非规则,判断标准请优先参考各技能文档
Weekly Installs
115
Repository
GitHub Stars
4
First Seen
Feb 1, 2026
Security Audits
Installed on
opencode111
claude-code111
cursor111
codex110
github-copilot109
gemini-cli109
TypeScript 핸드북 기반 타입 정의 및 베스트 프랙티스. 기본 문법·타입 조작·유틸리티 타입 상세는 references/ 및 Handbook 참고.
불필요한 어노테이션 생략. 변경 시 이중 수정 부담 감소, 추론이 더 정확한 경우 많음.
// ❌
const name: string = "John";
const user: { name: string; age: number } = { name: "John", age: 30 };
// ✅
const name = "John";
const user = { name: "John", age: 30 };
함수 계약 명확화, 반환 타입 오변경 방지. 공개 API·복잡한 로직에서 필수.
function calculateTotal(items: Item[]): number {
return items.reduce((sum, item) => sum + item.price, 0);
}
async function fetchUser(id: string): Promise<User> {
const res = await fetch(`/api/users/${id}`);
return res.json();
}
타입 안전성·자동완성 무효화. unknown + 타입 가드 또는 구체 타입 사용.
// ❌
function process(data: any) {
return data.value;
}
// ✅
function process(data: unknown): number {
if (typeof data === "object" && data !== null && "value" in data)
return (data as { value: number }).value;
throw new Error("Invalid data");
}
T, K extends keyof T 등 제약 명시. getProperty<T, K extends keyof T>(obj: T, key: K): T[K] 패턴 활용.typeof, instanceof, in으로 분기 후 타입 좁히기(value): value is T 사용템플릿:
assets/types.guards.ts
템플릿:
assets/tsconfig.nextjs.tsassets/tsconfig.node.tsassets/tsconfig.react.ts
템플릿:
assets/types.events.ts
템플릿:
assets/types.utils.ts
interface, 유니온/인터섹션은 type. API 설명은 명사형으로 작성 (/** 비활성화 상태 */).as const : 리터럴·객체 불변 보존. typeof obj[keyof typeof obj] 로 이넘처럼 활용.type UserId = string & { readonly brand: unique symbol } 로 동일 원시 타입 구분.as 대신 타입 가드.T extends object 등 명시.| 에러 | 대응 |
|---|---|
Type 'X' is not assignable to type 'Y' | 타입 가드로 분기 후 할당 |
Property 'X' does not exist on type 'Y' | 타입 확장 또는 optional |
Object is possibly 'null' or 'undefined' | if (x == null) / ?. / ?? |
Argument of type 'X' is not assignable to parameter of type 'Y' |
디버깅: 호버로 추론 확인, 가드·제네릭·유틸리티 타입으로 해결 후 as는 최후 수단.
이 문서들은 규칙이 아니라 참고용, 판단 기준은 각 skill 문서를 우선
Weekly Installs
115
Repository
GitHub Stars
4
First Seen
Feb 1, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode111
claude-code111
cursor111
codex110
github-copilot109
gemini-cli109
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
118,000 周安装
Pine Script可视化工具:自动分析YouTube交易视频并生成Pine Script实现规范
85 周安装
MongoDB迁移专家:安全架构变更与数据迁移方案设计指南
85 周安装
依赖解析器技能:推送前自动检测修复本地与CI环境不匹配,节省45分钟调试时间
85 周安装
dotnet-install:自动化 .NET SDK 和运行时安装指南 - 支持 Windows/macOS/Linux
85 周安装
UltraThink Orchestrator - 已弃用的AI工作流编排工具,推荐使用dev-orchestrator替代
85 周安装
数据库管理员技能:PostgreSQL/MySQL/MongoDB高可用架构、性能调优与灾难恢复
86 周安装
제네릭 T[] 또는 오버로드 |
Type 'X' cannot be used as an index type | keyof typeof obj 사용 |