- •no barrel files
- •avoid type assertions (
as Foooras unknown asorFoo!). do guards or Effect.schema stuff (exis) instead - •no
voidfor async - use async/effect (exception vscode-window-messages) - •no
export *- name exports explicitly - •prefer
undefinedover null (unless server requires null) - •prefer
undefinedover empty string - •prefer map/filter over loops/conditionals
- •avoid mutation
- •avoid
any - •no enums or namespaces (enums compile to weird JS; use string union types instead; exception: interfaces defined outside this repo that we can't change)
- •no runtime errors for developer mistakes (use types to ensure exhaustive switch/case; don't throw for null/undefined when input/consumer is within our control)
- •.ts filenames: camelCase, no hyphens, no leading capitals
- •preserve comments when refactoring; remove if wrong/obsolete
- •exported functions: single-line jsdoc /*_ foo _/ if name unclear; no params/return (TS provides types)
- •look for uses of (Object|Map).groupBy instead of older patterns
typescript
包括文件命名规则在内的TypeScript编码标准与约定。
SKILL.md
--- frontmattername: typescript description: TypeScript coding standards and conventions including file naming rules