expectTypeOf
WARNING
Bu fonksiyon çalışma zamanında hiçbir işlem gerçekleştirmez. Tip kontrolünü etkinleştirmek için --typecheck bayrağını geçirmeniz gerekir.
- Tip:
<T>(a: unknown) => ExpectTypeOf
not
- Tip:
ExpectTypeOf
.not özelliğini kullanarak tüm doğrulamaları tersine çevirebilirsiniz.
toEqualTypeOf
- Tip:
<T>(expected: T) => void
Bu eşleştirici, tiplerin birbirine tamamen eşit olup olmadığını kontrol eder. İki nesne farklı değerlere sahip olsa bile aynı tipe sahipse başarısız olmaz. Ancak bir nesnede bir özellik eksikse başarısız olur.
import { expectTypeOf } from 'vitest';
expectTypeOf({ a: 1 }).toEqualTypeOf<{ a: number }>();
expectTypeOf({ a: 1 }).toEqualTypeOf({ a: 1 });
expectTypeOf({ a: 1 }).toEqualTypeOf({ a: 2 });
expectTypeOf({ a: 1, b: 1 }).not.toEqualTypeOf<{ a: number }>();toMatchTypeOf
- Tip:
<T>(expected: T) => void
Bu eşleştirici, beklenen tipin sağlanan tipi kapsayıp kapsamadığını kontrol eder. toEqual'dan farklıdır ve expect'in toMatchObject()'ine daha benzerdir. Bu eşleştirici ile bir nesnenin bir tiple "eşleşip eşleşmediğini" kontrol edebilirsiniz.
import { expectTypeOf } from 'vitest';
expectTypeOf({ a: 1, b: 1 }).toMatchTypeOf({ a: 1 });
expectTypeOf<number>().toMatchTypeOf<string | number>();
expectTypeOf<string | number>().not.toMatchTypeOf<number>();extract
- Tip:
ExpectTypeOf<ExtractedUnion>
Daha fazla test için tipleri daraltmak amacıyla .extract kullanabilirsiniz.
import { expectTypeOf } from 'vitest';
type ResponsiveProp<T> = T | T[] | { xs?: T; sm?: T; md?: T };
interface CSSProperties {
margin?: string;
padding?: string;
}
function getResponsiveProp<T>(_props: T): ResponsiveProp<T> {
return {};
}
const cssProperties: CSSProperties = { margin: '1px', padding: '2px' };
expectTypeOf(getResponsiveProp(cssProperties))
.extract<{ xs?: any }>() // union'dan son tipi ayıklar
.toEqualTypeOf<{
xs?: CSSProperties;
sm?: CSSProperties;
md?: CSSProperties;
}>();
expectTypeOf(getResponsiveProp(cssProperties))
.extract<unknown[]>() // union'dan bir diziyi ayıklar
.toEqualTypeOf<CSSProperties[]>();WARNING
Union'da eşleşen tip bulunamazsa, .extract never döndürür.
exclude
- Tip:
ExpectTypeOf<NonExcludedUnion>
Daha fazla test için birleşimden tipleri kaldırmak amacıyla .exclude kullanabilirsiniz.
import { expectTypeOf } from 'vitest';
type ResponsiveProp<T> = T | T[] | { xs?: T; sm?: T; md?: T };
interface CSSProperties {
margin?: string;
padding?: string;
}
function getResponsiveProp<T>(_props: T): ResponsiveProp<T> {
return {};
}
const cssProperties: CSSProperties = { margin: '1px', padding: '2px' };
expectTypeOf(getResponsiveProp(cssProperties))
.exclude<unknown[]>()
.exclude<{ xs?: unknown }>() // veya sadece .exclude<unknown[] | { xs?: unknown }>()
.toEqualTypeOf<CSSProperties>();WARNING
Birleşimde hiçbir tip bulunamazsa, .exclude never döndürür.
returns
- Tip:
ExpectTypeOf<ReturnValue>
Bir fonksiyon tipinin dönüş değerini elde etmek için .returns kullanabilirsiniz.
import { expectTypeOf } from 'vitest';
expectTypeOf(() => {}).returns.toBeVoid();
expectTypeOf((a: number) => [a, a]).returns.toEqualTypeOf([1, 2]);WARNING
Fonksiyon olmayan bir tip üzerinde kullanılırsa, never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
parameters
- Tip:
ExpectTypeOf<Parameters>
Fonksiyon argümanlarını .parameters ile çıkararak değerleri üzerinde testler yapabilirsiniz. Parametreler bir dizi olarak döndürülür.
import { expectTypeOf } from 'vitest';
type NoParam = () => void;
type HasParam = (s: string) => void;
expectTypeOf<NoParam>().parameters.toEqualTypeOf<[]>();
expectTypeOf<HasParam>().parameters.toEqualTypeOf<[string]>();WARNING
Fonksiyon olmayan bir tip üzerinde kullanılırsa, never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
TIP
Daha açıklayıcı bir doğrulama için .toBeCallableWith eşleştiricisini de kullanabilirsiniz.
parameter
- Tip:
(nth: number) => ExpectTypeOf
Belirli bir fonksiyon argümanını .parameter(number) çağrısı ile çıkararak üzerinde başka doğrulamalar gerçekleştirebilirsiniz.
import { expectTypeOf } from 'vitest';
function foo(a: number, b: string) {
return [a, b];
}
expectTypeOf(foo).parameter(0).toBeNumber();
expectTypeOf(foo).parameter(1).toBeString();WARNING
Fonksiyon olmayan bir tip üzerinde kullanılırsa, never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
constructorParameters
- Tip:
ExpectTypeOf<ConstructorParameters>
Yapıcı parametrelerini bir değer dizisi olarak çıkarabilir ve bu yöntemle üzerlerinde doğrulamalar gerçekleştirebilirsiniz.
import { expectTypeOf } from 'vitest';
expectTypeOf(Date).constructorParameters.toEqualTypeOf<
[] | [string | number | Date]
>();WARNING
Fonksiyon olmayan bir tip üzerinde kullanılırsa, never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
TIP
Daha açıklayıcı bir doğrulama için .toBeConstructibleWith eşleştiricisini de kullanabilirsiniz.
instance
- Tip:
ExpectTypeOf<ConstructableInstance>
Bu özellik, sağlanan sınıfın bir örneği üzerinde gerçekleştirilebilecek eşleştiricilere erişim sağlar.
import { expectTypeOf } from 'vitest';
expectTypeOf(Date).instance.toHaveProperty('toISOString');WARNING
Fonksiyon olmayan bir tip üzerinde kullanılırsa, never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
items
- Tip:
ExpectTypeOf<T>
Dizi öğe tipini .items ile alarak daha fazla doğrulama gerçekleştirebilirsiniz.
import { expectTypeOf } from 'vitest';
expectTypeOf([1, 2, 3]).items.toEqualTypeOf<number>();
expectTypeOf([1, 2, 3]).items.not.toEqualTypeOf<string>();resolves
- Tip:
ExpectTypeOf<ResolvedPromise>
Bu eşleştirici bir Promise'in çözümlenmiş değerini çıkarır, böylece üzerinde başka doğrulamalar gerçekleştirebilirsiniz.
import { expectTypeOf } from 'vitest';
async function asyncFunc() {
return 123;
}
expectTypeOf(asyncFunc).returns.resolves.toBeNumber();
expectTypeOf(Promise.resolve('string')).resolves.toBeString();WARNING
Promise olmayan bir tür üzerinde kullanılırsa, never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
guards
- Tip:
ExpectTypeOf<Guard>
Bu eşleştirici guard değerini (örn. v is number) çıkarır, böylece üzerinde doğrulamalar gerçekleştirebilirsiniz.
import { expectTypeOf } from 'vitest';
function isString(v: any): v is string {
return typeof v === 'string';
}
expectTypeOf(isString).guards.toBeString();WARNING
Değer bir guard fonksiyonu değilse never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
asserts
- Tip:
ExpectTypeOf<Assert>
Bu eşleştirici assert değerini (örn. assert v is number) çıkarır, böylece üzerinde doğrulamalar gerçekleştirebilirsiniz.
import { expectTypeOf } from 'vitest';
function assertNumber(v: any): asserts v is number {
if (typeof v !== 'number') {
throw new TypeError('Nope !');
}
}
expectTypeOf(assertNumber).asserts.toBeNumber();WARNING
Değer bir assert fonksiyonu değilse never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
toBeAny
- Tip:
() => void
Bu eşleştirici ile sağlanan tipin any olup olmadığını kontrol edebilirsiniz. Tip çok spesifikse, test başarısız olacaktır.
import { expectTypeOf } from 'vitest';
expectTypeOf<any>().toBeAny();
expectTypeOf({} as any).toBeAny();
expectTypeOf('string').not.toBeAny();toBeUnknown
- Tip:
() => void
Bu eşleştirici, sağlanan tipin unknown olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf().toBeUnknown();
expectTypeOf({} as unknown).toBeUnknown();
expectTypeOf('string').not.toBeUnknown();toBeNever
- Tip:
() => void
Bu eşleştirici, sağlanan tipin never olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf<never>().toBeNever();
expectTypeOf((): never => {}).returns.toBeNever();toBeFunction
- Tip:
() => void
Bu eşleştirici, sağlanan tipin bir function olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(42).not.toBeFunction();
expectTypeOf((): never => {}).toBeFunction();toBeObject
- Tip:
() => void
Bu eşleştirici, sağlanan tipin bir object olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(42).not.toBeObject();
expectTypeOf({}).toBeObject();toBeArray
- Tip:
() => void
Bu eşleştirici, sağlanan tipin Array<T> olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(42).not.toBeArray();
expectTypeOf([]).toBeArray();
expectTypeOf([1, 2]).toBeArray();
expectTypeOf([{}, 42]).toBeArray();toBeString
- Tip:
() => void
Bu eşleştirici, sağlanan tipin bir string olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(42).not.toBeString();
expectTypeOf('').toBeString();
expectTypeOf('a').toBeString();toBeBoolean
- Tip:
() => void
Bu eşleştirici, sağlanan tipin boolean olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(42).not.toBeBoolean();
expectTypeOf(true).toBeBoolean();
expectTypeOf<boolean>().toBeBoolean();toBeVoid
- Tip:
() => void
Bu eşleştirici, sağlanan tipin void olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(() => {}).returns.toBeVoid();
expectTypeOf<void>().toBeVoid();toBeSymbol
- Tip:
() => void
Bu eşleştirici, sağlanan tipin bir symbol olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(Symbol(1)).toBeSymbol();
expectTypeOf<symbol>().toBeSymbol();toBeNull
- Tip:
() => void
Bu eşleştirici, sağlanan tipin null olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(null).toBeNull();
expectTypeOf<null>().toBeNull();
expectTypeOf(undefined).not.toBeNull();toBeUndefined
- Tip:
() => void
Bu eşleştirici, sağlanan tipin undefined olup olmadığını kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf(undefined).toBeUndefined();
expectTypeOf<undefined>().toBeUndefined();
expectTypeOf(null).not.toBeUndefined();toBeNullable
- Tip:
() => void
Bu eşleştirici, sağlanan tipin null veya undefined içerebilip içermediğini kontrol eder.
import { expectTypeOf } from 'vitest';
expectTypeOf<undefined | 1>().toBeNullable();
expectTypeOf<null | 1>().toBeNullable();
expectTypeOf<undefined | null | 1>().toBeNullable();toBeCallableWith
- Tip:
() => void
Bu eşleştirici, sağlanan fonksiyonu verilen parametrelerle çağırabileceğinizi doğrular.
import { expectTypeOf } from 'vitest';
type NoParam = () => void;
type HasParam = (s: string) => void;
expectTypeOf<NoParam>().toBeCallableWith();
expectTypeOf<HasParam>().toBeCallableWith('some string');WARNING
Fonksiyon olmayan bir tip üzerinde kullanılırsa, never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
toBeConstructibleWith
- Tip:
() => void
Bu eşleştirici, bir dizi yapıcı parametre ile yeni bir instance oluşturabileceğinizi doğrular.
import { expectTypeOf } from 'vitest';
expectTypeOf(Date).toBeConstructibleWith(new Date());
expectTypeOf(Date).toBeConstructibleWith('01-01-2000');WARNING
Fonksiyon olmayan bir tip üzerinde kullanılırsa, never döndürür, bu nedenle diğer eşleştiricilerle zincirleme yapılamaz.
toHaveProperty
- Tip:
<K extends keyof T>(property: K) => ExpectTypeOf<T[K]>
Bu eşleştirici, sağlanan nesnede bir özelliğin var olup olmadığını kontrol eder. Varsa, bu özelliğin tipi için aynı eşleştirici kümesini de döndürür, böylece doğrulamaları zincirleme olarak kullanabilirsiniz.
import { expectTypeOf } from 'vitest';
const obj = { a: 1, b: '' };
expectTypeOf(obj).toHaveProperty('a');
expectTypeOf(obj).not.toHaveProperty('c');
expectTypeOf(obj).toHaveProperty('a').toBeNumber();
expectTypeOf(obj).toHaveProperty('b').toBeString();
expectTypeOf(obj).toHaveProperty('a').not.toBeString();