skill

Migrate To Shoehorn

mattpocock388,771+ تثبيتموثوق

نبذة

# Migrate to Shoehorn

## Why shoehorn?

`shoehorn` lets you pass partial data in tests while keeping TypeScript happy. It replaces `as` assertions with type-safe alternatives.

**Test code only.** Never use shoehorn in production code.

Problems with `as` in tests:

- Trained not to use it - Must manually specify target type - Double-as (`as unknown as Type`) for intentionally wrong data

## Install

```bash npm i @total-typescript/shoehorn ```

## Migration patterns

### Large objects with few needed properties

Before:

```ts type Request = { body: { id: string }; headers: Record<string, string>; cookies: Record<string, string>; // ...20 more properties };

it("gets user by id", () => { // Only care about body.id but must fake entire Request getUser({ body: { id: "123" }, headers: {}, cookies: {}, // ...fake all 20 properties }); }); ```

After:

```ts import { fromPartial } from "@total-typescript/shoehorn";

it("gets user by id", () => { getUser( fromPartial({ body: { id: "123" }, }), ); }); ```

### `as Type` → `fromPartial()`

Before:

```ts getUser({ body: { id: "123" } } as Request); ```

After:

```ts import { fromPartial } from "@total-typescript/shoehorn";

getUser(fromPartial({ body: { id: "123" } })); ```

### `as unknown as Type` → `fromAny()`

Before:

```ts getUser({ body: { id: 123 } } as unknown as Request); // wrong type on purpose ```

After:

```ts import { fromAny } from "@total-typescript/shoehorn";

getUser(fromAny({ body: { id: 123 } })); ```

## When to use each

| Function | Use case | | --------------- | -------------------------------------------------- | | `fromPartial()` | Pass partial data that still type-checks | | `fromAny()` | Pass intentionally wrong data (keeps autocomplete) | | `fromExact()` | Force full object (swap with fromPartial later) |

## Workflow

1. **Gather requirements** - ask user: - What test files have `as` assertions causing problems? - Are they dealing with large objects where only some properties matter? - Do they need to pass intentionally wrong data for error testing?

2. **Install and migrate**: - [ ] Install: `npm i @total-typescript/shoehorn` - [ ] Find test files with `as` assertions: `grep -r " as [A-Z]" --include="*.test.ts" --include="*.spec.ts"` - [ ] Replace `as Type` with `fromPartial()` - [ ] Replace `as unknown as Type` with `fromAny()` - [ ] Add imports from `@total-typescript/shoehorn` - [ ] Run type check to verify

التثبيت

شغل هذا الأمر

npx skills add mattpocock/skills

يعمل مع

claude appclaude codeclaude apicursorcodexwindsurfclinezed

خطوات التثبيت

Install with `npx skills add mattpocock/skills`, or clone the repository and copy the `skills/misc/migrate-to-shoehorn` folder into your Claude skills directory.

عرض المصدر

أسئلة شائعة

كيف أثبت Migrate To Shoehorn؟

شغل هذا الأمر في الطرفية:

npx skills add mattpocock/skills
مع أي أدوات ذكاء اصطناعي تعمل Migrate To Shoehorn؟

تعمل مع claude_app، claude_code، claude_api، cursor، codex، windsurf، cline، zed.

من طور Migrate To Shoehorn؟

طورها mattpocock.

هل Migrate To Shoehorn مجانية؟

نعم، يمكنك استخدامها مجانا.

أصول ذات صلة

مختارات أخرى في البيانات والتحليلات.

كل بدائل Migrate To Shoehorn ←
skillclaude_appclaude_codeclaude_api
npx skills add heygen-com/hyperframes
Hyperframes Registry
Search, install, and wire registry blocks and components into HyperFrames compositions. Use BEFORE hand-building any named visual — whenever a brief,…622,896+
skillclaude_appclaude_codeclaude_api
npx skills add microsoft/azure-skills
Microsoft Foundry
Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, a…618,228+
skillclaude_appclaude_codeclaude_api
npx skills add microsoft/azure-skills
Azure Storage
Azure Storage Services including Blob Storage, File Shares, Queue Storage, Table Storage, and Data Lake. Answers questions about storage access tiers…606,705+
skillclaude_appclaude_codeclaude_api
npx skills add microsoft/azure-skills
Azure Kusto
Query and analyze data in Azure Data Explorer (Kusto/ADX) using KQL for log analytics, telemetry, and time series analysis. WHEN: KQL queries, Kusto d…605,770+
skillclaude_appclaude_codeclaude_api
npx skills add mattpocock/skills
Wizard
Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentia…424,988+
skillclaude_appclaude_codeclaude_api
npx skills add google/agents-cli
Google Agents CLI Observability
This skill should be used when the user wants to "set up tracing", "monitor my agent", "configure logging", "add observability", "debug production tra…357,631+

افحص قبل التثبيت

شغل أي مصدر عبر فحوصاتنا - الظهور في الذكاء الاصطناعي والأمان والأداء واكتشاف التقنيات.

المزيد في البيانات والتحليلات