0Pricing
TypeScript Academy · Ders

Sınamaların ve sahte nesnelerin türlerini belirleme; expectTypeOf

Statik denetimler için expectTypeOf'u ve kırılgan sınamaları önlemek için Vitest/Jest'te tür güvenli sahte nesneleri kullanın.

Sınamaların ve sahte nesnelerin türlerini belirleme; expectTypeOf, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 3 dersten oluşur.

Giriş

Hedef: expectTypeOf ile türleri doğrulayın ve yeniden düzenlemelerin sınamaları sessizce bozmaması için tür güvenli sahte nesneler yazın.

expectTypeOf temelleri

expectTypeOf, Vitest'te derleme zamanında türleri doğrular; çalışma zamanı maliyeti yoktur, ancak uyuşmazlıkları erkenden yakalar.

// Vitest provides expectTypeOf
import { expectTypeOf } from "vitest";

function fullName(first: string, last: string) {
  return `${first} ${last}`
}

// static checks (compile-time)
expectTypeOf(fullName).toBeFunction()
expectTypeOf(fullName("Ada","Lovelace")).toBeString()

Gelişmiş doğrulamalar

Yararlı kalıplar: Awaited<ReturnType<...>> ile dönüş türlerini çözümleme, değişmez değer ve birleşim karşılaştırmaları.

import { expectTypeOf } from "vitest";

interface User { id: number; name: string }
function getUser(): Promise<User> { return Promise.resolve({ id:1, name:"A" }) }

// unwrap Promise
type Resolved = Awaited<ReturnType<typeof getUser>>
expectTypeOf<Resolved>().toMatchTypeOf<User>()

// literal + union
const status = "ok" as const
expectTypeOf(status).toEqualTypeOf<"ok">()

Vitest sahte nesneleri

vi.fn için bir imza sağlayarak sahte nesnenin türünü doğru belirtin; yanlış bağımsız değişkenler derleme sırasında yakalanır.

import { vi, describe, it, expect } from "vitest";

function fetchUser(id: number): Promise<string> {
  return Promise.resolve(`user-${id}`)
}

// typed mock
const mockFetch: ReturnType<typeof vi.fn<[(id: number), Promise<string>]>> = vi.fn(async (id: number) => `user-${id}`)

it("uses typed mock", async () => {
  const name = await mockFetch(5)
  expect(name).toBe("user-5")
  // mockFetch("x") // TS error: id must be number
})

Jest sahte nesneleri

Jest'te çağrı imzasını jest.fn<Signature>(); yazarak zorunlu kılın; sahte nesnenin türünü MockedFunction ile belirginleştirin.

import { jest } from "@jest/globals";

function times(a: number, b: number) { return a * b }

const mul = jest.fn<(a:number,b:number)=>number>((a,b)=>a*b)

mul(2,3) // ok
// mul("2",3) // TS error

// MockedFunction utility
type MulMock = jest.MockedFunction<typeof mul>
const _check: MulMock = mul

İpuçları

Değer doğrulamasını (çalışma zamanı) tür doğrulamasından (derleme zamanı) ayırın; bunlar farklı katmanlardır.

// value assertions
import { expect } from "vitest";
expect(2 + 3).toBe(5)

// type assertions (compile-time)
import { expectTypeOf } from "vitest";
expectTypeOf(2 + 3).toBeNumber()

// don't confuse with runtime validators like zod

Soru

Hızlı denetim: expectTypeOf, bir sınama çalıştırılırken neyi denetler?

Özet

Özet: expectTypeOf — derleme zamanında tür güvencesi; vi.fn/jest.fn — imzaya sahip tür güvenli sahte nesneler.

Sıkça Sorulan Sorular

“Sınamaların ve sahte nesnelerin türlerini belirleme; expectTypeOf” dersi ücretsiz mi?

Evet — “Sınamaların ve sahte nesnelerin türlerini belirleme; expectTypeOf” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 3 dersten oluşur.

“Sınamaların ve sahte nesnelerin türlerini belirleme; expectTypeOf” dersinde ne öğreneceğim?

Statik denetimler için expectTypeOf'u ve kırılgan sınamaları önlemek için Vitest/Jest'te tür güvenli sahte nesneleri kullanın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.

“Sınamaların ve sahte nesnelerin türlerini belirleme; expectTypeOf” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. TypeScript için Vitest/Jest kurulumu
  2. Sınamaların ve sahte nesnelerin türlerini belirleme; expectTypeOf
  3. E2E türlerine kısa bakış (Playwright/Cypress)
← TypeScript Academy Sayfasına Dön