Design ★ 140,637

migrate-to-shoehorn

Shoehorn kullanarak test dosyalarınızdaki `as` tip iddialarını geçirin. Test verilerinizi kısmi olarak tanımlamak veya testlerde `as` kullanımını değiştirmek istediğinizde kullanın.

cd ~/.claude/skills
git clone https://github.com/mattpocock/skills.git skills

Shoehorn'a Geçiş

Neden shoehorn?

shoehorn testlerde kısmi veri geçirmenizi sağlarken TypeScript'i mutlu tutar. as assertions'ını type-safe alternatiflerle değiştirir.

Sadece test kodu için. Shoehorn'u asla production kodunda kullanmayın.

Testlerde as kullanmanın sorunları:

  • Kullanmamak için eğitildiniz
  • Hedef tipi manuel olarak belirtmeniz gerekir
  • İsteyerek yanlış veriler için double-as (as unknown as Type)

Kurulum

npm i @total-typescript/shoehorn

Geçiş desenleri

Az sayıda gerekli özelliği olan büyük nesneler

Öncesi:

type Request = {
  body: { id: string };
  headers: Record<string, string>;
  cookies: Record<string, string>;
  // ...20 daha fazla özellik
};

it("gets user by id", () => {
  // Sadece body.id'ye ihtiyaç duyar ama tüm Request'i fake etmeli
  getUser({
    body: { id: "123" },
    headers: {},
    cookies: {},
    // ...tüm 20 özelliği fake et
  });
});

Sonrası:

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

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

as TypefromPartial()

Öncesi:

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

Sonrası:

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

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

as unknown as TypefromAny()

Öncesi:

getUser({ body: { id: 123 } } as unknown as Request); // isteyerek yanlış tip

Sonrası:

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

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

Her biri ne zaman kullanılmalı

Function Kullanım durumu
fromPartial() Yine de type-check olan kısmi veri geçir
fromAny() İsteyerek yanlış veri geçir (autocomplete'i koru)
fromExact() Tam nesneyi zorla (daha sonra fromPartial ile değiş)

İş akışı

  1. Gereksinimleri toplayın - kullanıcıya sorun:

    • Hangi test dosyalarında as assertions sorun oluşturuyor?
    • Sadece bazı özelliklerin önemli olduğu büyük nesnelerle mi çalışıyorlar?
    • Hata testleri için isteyerek yanlış veri geçirmeleri mi gerekiyor?
  2. Kurun ve geçişi yapın:

    • [ ] Kurun: npm i @total-typescript/shoehorn
    • [ ] as assertions'ı içeren test dosyalarını bulun: grep -r " as [A-Z]" --include="*.test.ts" --include="*.spec.ts"
    • [ ] as Type yerine fromPartial() yazın
    • [ ] as unknown as Type yerine fromAny() yazın
    • [ ] @total-typescript/shoehorn'dan import'ları ekleyin
    • [ ] Type check'i çalıştırarak doğrulayın

Benzer skill'ler

brainstorming Design

Herhangi bir yaratıcı çalışmaya başlamadan önce bunu mutlaka kullanın - feature oluştururken, component inşa ederken, functionality eklerken veya davranış değiştirirken. Kullanıcı niyetini, gereksinimleri ve tasarımı implementation öncesinde araştırır.

obra/superpowers ★ 235,495
finishing-a-development-branch Design

Uygulama tamamlandığında, tüm testler geçtiğinde ve çalışmanızı nasıl entegre edeceğinize karar vermeniz gerektiğinde kullanın - merge, PR veya cleanup seçeneklerini sunarak geliştirme sürecinin tamamlanmasını rehberlik eder.

obra/superpowers ★ 235,495
receiving-code-review Design

Kod incelemesi geri bildirimi alırken, önerileri uygulamadan önce kullanın; özellikle geri bildirim belirsiz veya teknik olarak şüpheli görünüyorsa - performatif anlaşmadan veya körü körüne uygulamadan ziyade teknik titizlik ve doğrulama gerekir.

obra/superpowers ★ 235,495
requesting-code-review Design

Görevleri tamamlarken, büyük özellikleri hayata geçirirken veya merge etmeden önce çalışmanın gereksinimleri karşıladığını doğrulamak için kullanın.

obra/superpowers ★ 235,495
using-git-worktrees Design

Yeni bir feature üzerinde çalışmaya başlarken veya implementasyon planını yürütmeden önce kullanın - native araçlar veya git worktree fallback aracılığıyla izole edilmiş bir workspace sağlar.

obra/superpowers ★ 235,495
using-superpowers Design

Herhangi bir konuşma başlatırken kullanın - skill'lerin nasıl bulunacağını ve kullanılacağını belirler, clarification soruları da dahil olmak üzere HERHANGİ bir yanıt vermeden önce skill invocation gerektirir.

obra/superpowers ★ 235,495
Daha fazla: Design →