marius-townhouse
@marius-townhouse
Public Skills
allowjs-mixing
by marius-townhouse
Use when migrating JavaScript to TypeScript. Use when gradually adopting TypeScript. Use when working with mixed codebases. Use when converting large projects. Use when teams are learning TypeScript.
avoid-inferable-annotations
by marius-townhouse
Use when writing type annotations on variables. Use when TypeScript can infer the type. Use when code feels cluttered with types.
async-over-callbacks
by marius-townhouse
Use when writing asynchronous code. Use when tempted to use callbacks. Use when composing multiple async operations.
accurate-environment-model
by marius-townhouse
Use when defining global types. Use when augmenting window. Use when typing environment variables. Use when working with build-time constants. Use when configuring type definitions.
avoid-repeated-params
by marius-townhouse
Use when functions have multiple parameters of same type. Use when parameter order is easy to confuse. Use when designing function signatures.
avoid-numeric-index
by marius-townhouse
Use when defining array-like types. Use when tempted to use number as index type. Use when understanding array keys.
avoid-anecdotal-types
by marius-townhouse
Use when creating types from example data. Use when types don't match all cases. Use when API responses vary.
branded-types
by marius-townhouse
Use when primitive types need semantic distinction. Use when string or number types have different meanings. Use when you need nominal typing.
code-gen-independent
by marius-townhouse
Use when confused about types at runtime. Use when trying to use instanceof with interfaces. Use when type errors don't prevent JavaScript output.
compiler-performance
by marius-townhouse
Use when build times are slow. Use when optimizing TypeScript projects. Use when configuring project references. Use when dealing with large codebases. Use when improving IDE responsiveness.
avoid-unnecessary-type-params
by marius-townhouse
Use when writing generic functions or types. Use when reviewing type signatures. Use when a type parameter only appears once. Use when tempted to add generics for "flexibility".
consistent-aliases
by marius-townhouse
Use when narrowing doesn't work as expected. Use when using variables for object properties. Use when refinements are lost.
domain-language-types
by marius-townhouse
Use when naming types. Use when types describe structure not meaning. Use when domain experts won't understand type names.
control-union-distribution
by marius-townhouse
Use when conditional types behave unexpectedly with unions. Use when boolean or never types cause surprises. Use when needing to prevent distribution over unions. Use when recursive generic types don't distribute.
distinct-special-values
by marius-townhouse
Use when tempted to use -1 or "" as special values. Use when indexOf returns -1. Use when special cases need representation.
currying-inference
by marius-townhouse
Use when generic types aren't inferred. Use when builder patterns need better types. Use when creating new inference sites.
limit-any-type
by marius-townhouse
Use when tempted to use any type. Use when getting type errors that seem hard to fix. Use when migrating JavaScript to TypeScript.
excess-property-checking
by marius-townhouse
Use when assigning object literals to typed variables. Use when confused by "unknown property" errors. Use when extra properties are flagged on object literals but not variables.
index-signature-alternatives
by marius-townhouse
Use when defining object types with dynamic keys. Use when tempted to use index signatures. Use when parsing CSV or JSON data.
generics-as-functions
by marius-townhouse
Use when defining generic types or functions. Use when constraining type parameters. Use when writing type-level code. Use when documenting generic types.
narrow-any-scope
by marius-townhouse
Use when any is unavoidable. Use when working with untyped libraries. Use when silencing specific type errors.
avoid-wrapper-types
by marius-townhouse
Use when typing primitives. Use when tempted to use String, Number, Boolean. Use when wrapper types appear in errors.
editor-interrogation
by marius-townhouse
Use when debugging type inference. Use when types behave unexpectedly. Use when learning unfamiliar code.
limit-optional-properties
by marius-townhouse
Use when adding optional properties. Use when types have many optional fields. Use when considering required vs optional.
export-public-types
by marius-townhouse
Use when publishing libraries. Use when types appear in public APIs. Use when users need to reference types. Use when building reusable components. Use when designing library interfaces.
codegen-over-complex-types
by marius-townhouse
Use when types become extremely complex. Use when types mirror external schemas. Use when maintaining type-to-schema mappings. Use when types require extensive type-level logic. Use when types drift from data sources.
different-variables-types
by marius-townhouse
Use when tempted to reuse variables. Use when variable changes type. Use when using union types for multiple purposes.
iterate-objects-safely
by marius-townhouse
Use when iterating over object keys and values. Use when for...in loops produce type errors. Use when Object.entries returns any types. Use when dealing with prototype pollution concerns. Use when considering Map vs object.
dry-types
by marius-townhouse
Use when duplicating type definitions. Use when interfaces share common fields. Use when types can be derived from other types.
context-type-inference
by marius-townhouse
Use when extracting values causes type errors. Use when callback types are wrong. Use when const assertions are needed.
callback-this-type
by marius-townhouse
Use when callbacks use this. Use when API provides this context. Use when typing event handlers. Use when library sets this in callbacks. Use when documenting callback context.
mirror-types
by marius-townhouse
Use when depending on external types. Use when avoiding tight coupling. Use when external types might change. Use when building adapters. Use when types are only used internally.
exclusive-or-properties
by marius-townhouse
Use when exactly one of several properties should be present. Use when modeling mutually exclusive options. Use when building component props with alternative configurations. Use when designing API parameters that have variants.
no-null-in-aliases
by marius-townhouse
Use when defining type aliases. Use when null/undefined appears in type definitions. Use when types are confusing.
dom-hierarchy
by marius-townhouse
Use when working with DOM APIs. Use when typing element references. Use when creating DOM utilities. Use when handling events. Use when manipulating the DOM.
conditional-types-over-overloads
by marius-townhouse
Use when typing functions with multiple return types. Use when function behavior depends on input type. Use when dealing with union type inputs. Use when considering function overloads.
hide-unsafe-assertions
by marius-townhouse
Use when type assertions are necessary. Use when function implementations need any. Use when hiding unsafe code.
create-objects-all-at-once
by marius-townhouse
Use when building objects incrementally. Use when adding properties after creation. Use when TypeScript errors on dynamic object construction.
module-augmentation
by marius-townhouse
Use when extending third-party types. Use when adding properties to existing interfaces. Use when plugins extend core types. Use when declaration merging is needed. Use when augmenting global types.
function-type-expressions
by marius-townhouse
Use when writing multiple functions with same signature. Use when implementing callbacks. Use when matching existing function types.
no-type-in-docs
by marius-townhouse
Use when writing comments about types. Use when documenting function parameters. Use when naming variables.
liberal-accept-strict-return
by marius-townhouse
Use when designing function signatures. Use when creating APIs. Use when parameters have optional fields but return types feel too broad.
module-by-module-migration
by marius-townhouse
Use when migrating large codebases. Use when converting JavaScript to TypeScript. Use when managing dependencies. Use when planning migration order. Use when teams are adopting TypeScript.
ecmascript-over-typescript-features
by marius-townhouse
Use when choosing between TypeScript and ECMAScript features. Use when writing portable code. Use when considering enum or namespace. Use when targeting multiple JavaScript environments. Use when writing library code.
evolving-types
by marius-townhouse
Use when types change as code executes. Use when arrays are built incrementally. Use when working with any[] that narrows.
functional-constructs-types
by marius-townhouse
Use when building arrays in loops. Use when types don't flow through code. Use when considering map/filter/reduce.
noimplicitany-completion
by marius-townhouse
Use when finishing TypeScript migration. Use when enabling strict mode. Use when finalizing tsconfig. Use when ensuring type safety. Use when completing adoption.
imprecise-over-inaccurate
by marius-townhouse
Use when types become too complex. Use when precision causes false positives. Use when accuracy is uncertain.
exhaustiveness-checking
by marius-townhouse
Use when handling tagged unions. Use when adding new cases to discriminated unions. Use when switch statements must cover all cases.
precise-any-variants
by marius-townhouse
Use when forced to use any. Use when any is too broad. Use when function types need any.