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 mkdir -p ~/.claude/skills/migrate-to-shoehorn
curl -fsSL https://raw.githubusercontent.com/mattpocock/skills/HEAD/skills/misc/migrate-to-shoehorn/SKILL.md \
-o ~/.claude/skills/migrate-to-shoehorn/SKILL.md 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ı:
as unknown as Type)npm i @total-typescript/shoehorn
Ö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 Type → fromPartial()Öncesi:
getUser({ body: { id: "123" } } as Request);
Sonrası:
import { fromPartial } from "@total-typescript/shoehorn";
getUser(fromPartial({ body: { id: "123" } }));
as unknown as Type → fromAny()Öncesi:
getUser({ body: { id: 123 } } as unknown as Request); // isteyerek yanlış tip
Sonrası:
import { fromAny } from "@total-typescript/shoehorn";
getUser(fromAny({ body: { id: 123 } }));
| 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ş) |
Gereksinimleri toplayın - kullanıcıya sorun:
as assertions sorun oluşturuyor?Kurun ve geçişi yapın:
npm i @total-typescript/shoehornas assertions'ı içeren test dosyalarını bulun: grep -r " as [A-Z]" --include="*.test.ts" --include="*.spec.ts"as Type yerine fromPartial() yazınas unknown as Type yerine fromAny() yazın@total-typescript/shoehorn'dan import'ları ekleyinHerhangi 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.
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.
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.
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.
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.
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.