Google TypeScript Best Practices
Comprehensive TypeScript style guide based on Google's internal standards, designed for AI agents and LLMs. Contains 45 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
-
Writing new TypeScript code
-
Organizing modules and imports
-
Designing type annotations and interfaces
-
Creating classes and functions
-
Reviewing code for style consistency
-
Refactoring existing TypeScript code
Rule Categories by Priority
Priority Category Impact Prefix
1 Module Organization CRITICAL module-
2 Type Safety CRITICAL types-
3 Class Design HIGH class-
4 Function Patterns HIGH func-
5 Control Flow MEDIUM-HIGH control-
6 Error Handling MEDIUM error-
7 Naming & Style MEDIUM naming-
8 Literals & Coercion LOW-MEDIUM literal-
Quick Reference
- Module Organization (CRITICAL)
-
module-named-exports
-
Use named exports over default exports
-
module-no-mutable-exports
-
Avoid mutable exports
-
module-es6-modules
-
Use ES6 modules exclusively
-
module-no-namespaces
-
Avoid TypeScript namespaces
-
module-import-paths
-
Use relative paths for project imports
-
module-import-type
-
Use import type for type-only imports
-
module-export-api-surface
-
Minimize exported API surface
- Type Safety (CRITICAL)
-
types-no-any
-
Never use the any type
-
types-prefer-interfaces
-
Prefer interfaces over type aliases for objects
-
types-explicit-structural
-
Explicitly annotate structural types
-
types-nullable-patterns
-
Handle nullable types correctly
-
types-array-syntax
-
Use consistent array type syntax
-
types-no-wrapper-types
-
Never use wrapper object types
-
types-prefer-map-set
-
Prefer Map and Set over index signatures
-
types-no-empty-object
-
Avoid empty object type
- Class Design (HIGH)
-
class-parameter-properties
-
Use parameter properties for constructor assignment
-
class-readonly-properties
-
Mark properties readonly when never reassigned
-
class-no-private-fields
-
Use TypeScript private over private fields
-
class-no-static-containers
-
Avoid container classes with only static members
-
class-constructor-parens
-
Always use parentheses in constructor calls
-
class-no-prototype-manipulation
-
Never manipulate prototypes directly
- Function Patterns (HIGH)
-
func-declarations-over-expressions
-
Prefer function declarations over expressions
-
func-arrow-concise-bodies
-
Use concise arrow function bodies appropriately
-
func-avoid-this-rebinding
-
Avoid rebinding this
-
func-rest-parameters
-
Use rest parameters over arguments
-
func-generator-syntax
-
Use correct generator function syntax
-
func-default-parameters
-
Use default parameters sparingly
- Control Flow (MEDIUM-HIGH)
-
control-always-use-braces
-
Always use braces for control structures
-
control-triple-equals
-
Always use triple equals
-
control-for-of-iteration
-
Prefer for-of over for-in for arrays
-
control-switch-default
-
Always include default case in switch
-
control-no-assignment-in-condition
-
Avoid assignment in conditional expressions
- Error Handling (MEDIUM)
-
error-throw-errors
-
Always throw Error instances
-
error-catch-unknown
-
Type catch clause variables as unknown
-
error-empty-catch-comments
-
Document empty catch blocks
-
error-avoid-assertions
-
Avoid type and non-null assertions
- Naming & Style (MEDIUM)
-
naming-identifier-styles
-
Use correct identifier naming styles
-
naming-descriptive-names
-
Use descriptive names
-
naming-no-decorative-underscores
-
Avoid decorative underscores
-
naming-no-interface-prefix
-
No I prefix for interfaces
-
naming-constants
-
Use CONSTANT_CASE for true constants
- Literals & Coercion (LOW-MEDIUM)
-
literal-single-quotes
-
Use single quotes for strings
-
literal-number-formats
-
Use correct number literal formats
-
literal-explicit-coercion
-
Use explicit type coercion
-
literal-array-constructor
-
Avoid Array constructor
How to Use
Read individual reference files for detailed explanations and code examples:
-
Section definitions - Category structure and impact levels
-
Rule template - Template for adding new rules
Reference Files
File Description
AGENTS.md Complete compiled guide with all rules
references/_sections.md Category definitions and ordering
assets/templates/_template.md Template for new rules
metadata.json Version and reference information