Skip to content
Vitest 3
Main Navigation Leitfaden & APIKonfigurationBrowser-ModusFortgeschritten API
3.2.0
2.1.9
1.6.1
0.34.6

Deutsch

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Deutsch

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Aussehen

Sidebar Navigation

Einführung

Warum Vitest

Erste Schritte

Funktionen

Vitest konfigurieren

API

Test-API-Referenz

Mock-Funktionen

Vi

expect

expectTypeOf

assert

assertType

Leitfaden

Befehlszeilenschnittstelle

Testfilterung

Testprojekte

Reporter

Code-Abdeckung

Snapshot

Mocking

Parallelisierung

Typüberprüfungen

Vitest UI

Tests im Quellcode

Test-Kontext

Test-Annotationen

Testumgebung

Matcher erweitern

IDE-Integrationen

Debugging

Häufige Fehler

Migrationsleitfaden

Migration zu Vitest 3.0

Migration von Jest

Performance

Leistungsprofilierung von Tests

Leistung verbessern

Browser-Modus

Erweiterte API

Vergleiche mit anderen Test-Runnern

Auf dieser Seite

expectTypeOf ​

WARNING

Zur Laufzeit hat diese Funktion keine Auswirkungen. Um die Typüberprüfung zu aktivieren, müssen Sie das --typecheck-Flag übergeben.

  • Typ: <T>(a: unknown) => ExpectTypeOf

not ​

  • Typ: ExpectTypeOf

Sie können alle Assertions mithilfe der .not-Eigenschaft negieren.

toEqualTypeOf ​

  • Typ: <T>(expected: T) => void

Dieser Matcher überprüft, ob die Typen vollständig identisch sind. Er schlägt nicht fehl, wenn zwei Objekte unterschiedliche Werte, aber denselben Typ haben. Er schlägt jedoch fehl, wenn einem Objekt eine Eigenschaft fehlt.

ts
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 ​

  • Typ: <T>(expected: T) => void

Dieser Matcher überprüft, ob der erwartete Typ den angegebenen Typ erweitert. Er unterscheidet sich von toEqual und ähnelt eher expect's toMatchObject(). Mit diesem Matcher können Sie überprüfen, ob ein Objekt einem Typ "entspricht".

ts
import { expectTypeOf } from 'vitest';

expectTypeOf({ a: 1, b: 1 }).toMatchTypeOf({ a: 1 });
expectTypeOf<number>().toMatchTypeOf<string | number>();
expectTypeOf<string | number>().not.toMatchTypeOf<number>();

extract ​

  • Typ: ExpectTypeOf<ExtractedUnion>

Sie können .extract verwenden, um Typen für weitere Überprüfungen einzugrenzen.

ts
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 }>() // extrahiert den letzten Typ aus einer Union
  .toEqualTypeOf<{
    xs?: CSSProperties;
    sm?: CSSProperties;
    md?: CSSProperties;
  }>();

expectTypeOf(getResponsiveProp(cssProperties))
  .extract<unknown[]>() // extrahiert ein Array aus einer Union
  .toEqualTypeOf<CSSProperties[]>();

WARNING

Wenn kein Typ in der Union gefunden wird, gibt .extract never zurück.

exclude ​

  • Typ: ExpectTypeOf<NonExcludedUnion>

Sie können .exclude verwenden, um Typen aus einer Union für weitere Überprüfungen zu entfernen.

ts
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 }>() // oder einfach .exclude<unknown[] | { xs?: unknown }>()
  .toEqualTypeOf<CSSProperties>();

WARNING

Wenn kein Typ in der Union gefunden wird, gibt .exclude never zurück.

returns ​

  • Typ: ExpectTypeOf<ReturnValue>

Sie können .returns verwenden, um den Rückgabewert eines Funktionstyps zu extrahieren.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(() => {}).returns.toBeVoid();
expectTypeOf((a: number) => [a, a]).returns.toEqualTypeOf([1, 2]);

WARNING

Wenn auf einen Nicht-Funktionstyp angewendet, wird never zurückgegeben, sodass Sie es nicht mit anderen Matchern verketten können.

parameters ​

  • Typ: ExpectTypeOf<Parameters>

Sie können Funktionsargumente mit .parameters extrahieren, um Assertions auf deren Wert durchzuführen. Parameter werden als Array zurückgegeben.

ts
import { expectTypeOf } from 'vitest';

type NoParam = () => void;
type HasParam = (s: string) => void;

expectTypeOf<NoParam>().parameters.toEqualTypeOf<[]>();
expectTypeOf<HasParam>().parameters.toEqualTypeOf<[string]>();

WARNING

Wenn auf einen Nicht-Funktionstyp angewendet, wird never zurückgegeben, sodass Sie es nicht mit anderen Matchern verketten können.

TIP

Sie können auch den Matcher .toBeCallableWith als ausdrucksstärkere Assertion verwenden.

parameter ​

  • Typ: (nth: number) => ExpectTypeOf

Sie können ein bestimmtes Funktionsargument mit dem Aufruf .parameter(number) extrahieren, um andere Assertions darauf durchzuführen.

ts
import { expectTypeOf } from 'vitest';

function foo(a: number, b: string) {
  return [a, b];
}

expectTypeOf(foo).parameter(0).toBeNumber();
expectTypeOf(foo).parameter(1).toBeString();

WARNING

Wenn auf einen Nicht-Funktionstyp angewendet, wird never zurückgegeben, sodass Sie es nicht mit anderen Matchern verketten können.

constructorParameters ​

  • Typ: ExpectTypeOf<ConstructorParameters>

Sie können Konstruktorparameter als Array von Werten extrahieren und mit dieser Methode Assertions darauf durchführen.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(Date).constructorParameters.toEqualTypeOf<
  [] | [string | number | Date]
>();

WARNING

Wenn auf einen Nicht-Funktionstyp angewendet, wird never zurückgegeben, sodass Sie es nicht mit anderen Matchern verketten können.

TIP

Sie können auch den Matcher .toBeConstructibleWith als ausdrucksstärkere Assertion verwenden.

instance ​

  • Typ: ExpectTypeOf<ConstructableInstance>

Diese Eigenschaft ermöglicht den Zugriff auf Matcher, die auf einer Instanz der angegebenen Klasse angewendet werden können.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(Date).instance.toHaveProperty('toISOString');

WARNING

Wenn auf einen Nicht-Funktionstyp angewendet, wird never zurückgegeben, sodass Sie es nicht mit anderen Matchern verketten können.

items ​

  • Typ: ExpectTypeOf<T>

Sie können den Typ der Array-Elemente mit .items abrufen, um weitere Assertions durchzuführen.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf([1, 2, 3]).items.toEqualTypeOf<number>();
expectTypeOf([1, 2, 3]).items.not.toEqualTypeOf<string>();

resolves ​

  • Typ: ExpectTypeOf<ResolvedPromise>

Dieser Matcher extrahiert den Wert eines aufgelösten Promise, sodass Sie weitere Assertions darauf durchführen können.

ts
import { expectTypeOf } from 'vitest';

async function asyncFunc() {
  return 123;
}

expectTypeOf(asyncFunc).returns.resolves.toBeNumber();
expectTypeOf(Promise.resolve('string')).resolves.toBeString();

WARNING

Wenn auf einen Nicht-Promise-Typ angewendet, wird never zurückgegeben, sodass Sie es nicht mit anderen Matchern verketten können.

guards ​

  • Typ: ExpectTypeOf<Guard>

Dieser Matcher extrahiert den Guard-Typ (z.B. v is number), sodass Sie Assertions darauf durchführen können.

ts
import { expectTypeOf } from 'vitest';

function isString(v: any): v is string {
  return typeof v === 'string';
}
expectTypeOf(isString).guards.toBeString();

WARNING

Gibt never zurück, wenn der Wert keine Guard-Funktion ist, sodass Sie es nicht mit anderen Matchern verketten können.

asserts ​

  • Typ: ExpectTypeOf<Assert>

Dieser Matcher extrahiert den Assert-Typ (z.B. assert v is number), sodass Sie Assertions darauf durchführen können.

ts
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

Gibt never zurück, wenn der Wert keine Assert-Funktion ist, sodass Sie es nicht mit anderen Matchern verketten können.

toBeAny ​

  • Typ: () => void

Mit diesem Matcher können Sie überprüfen, ob es sich um den Typ any handelt. Wenn der Typ zu spezifisch ist, schlägt der Test fehl.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf<any>().toBeAny();
expectTypeOf({} as any).toBeAny();
expectTypeOf('string').not.toBeAny();

toBeUnknown ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ unknown ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf().toBeUnknown();
expectTypeOf({} as unknown).toBeUnknown();
expectTypeOf('string').not.toBeUnknown();

toBeNever ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ never ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf<never>().toBeNever();
expectTypeOf((): never => {}).returns.toBeNever();

toBeFunction ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ eine function ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(42).not.toBeFunction();
expectTypeOf((): never => {}).toBeFunction();

toBeObject ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ ein object ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(42).not.toBeObject();
expectTypeOf({}).toBeObject();

toBeArray ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ Array<T> ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(42).not.toBeArray();
expectTypeOf([]).toBeArray();
expectTypeOf([1, 2]).toBeArray();
expectTypeOf([{}, 42]).toBeArray();

toBeString ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ ein string ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(42).not.toBeString();
expectTypeOf('').toBeString();
expectTypeOf('a').toBeString();

toBeBoolean ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ boolean ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(42).not.toBeBoolean();
expectTypeOf(true).toBeBoolean();
expectTypeOf<boolean>().toBeBoolean();

toBeVoid ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ void ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(() => {}).returns.toBeVoid();
expectTypeOf<void>().toBeVoid();

toBeSymbol ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ ein symbol ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(Symbol(1)).toBeSymbol();
expectTypeOf<symbol>().toBeSymbol();

toBeNull ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ null ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(null).toBeNull();
expectTypeOf<null>().toBeNull();
expectTypeOf(undefined).not.toBeNull();

toBeUndefined ​

  • Typ: () => void

Dieser Matcher überprüft, ob der angegebene Typ undefined ist.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(undefined).toBeUndefined();
expectTypeOf<undefined>().toBeUndefined();
expectTypeOf(null).not.toBeUndefined();

toBeNullable ​

  • Typ: () => void

Dieser Matcher überprüft, ob Sie null oder undefined mit dem angegebenen Typ verwenden können.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf<undefined | 1>().toBeNullable();
expectTypeOf<null | 1>().toBeNullable();
expectTypeOf<undefined | null | 1>().toBeNullable();

toBeCallableWith ​

  • Typ: () => void

Dieser Matcher stellt sicher, dass Sie die angegebene Funktion mit bestimmten Parametern aufrufen können.

ts
import { expectTypeOf } from 'vitest';

type NoParam = () => void;
type HasParam = (s: string) => void;

expectTypeOf<NoParam>().toBeCallableWith();
expectTypeOf<HasParam>().toBeCallableWith('some string');

WARNING

Wenn auf einen Nicht-Funktionstyp angewendet, wird never zurückgegeben, sodass Sie es nicht mit anderen Matchern verketten können.

toBeConstructibleWith ​

  • Typ: () => void

Dieser Matcher stellt sicher, dass Sie eine neue Instanz mit bestimmten Konstruktorparametern erzeugen können.

ts
import { expectTypeOf } from 'vitest';

expectTypeOf(Date).toBeConstructibleWith(new Date());
expectTypeOf(Date).toBeConstructibleWith('01-01-2000');

WARNING

Wenn auf einen Nicht-Funktionstyp angewendet, wird never zurückgegeben, sodass Sie es nicht mit anderen Matchern verketten können.

toHaveProperty ​

  • Typ: <K extends keyof T>(property: K) => ExpectTypeOf<T[K]>

Dieser Matcher überprüft, ob eine Eigenschaft im angegebenen Objekt existiert. Wenn sie existiert, gibt er auch die gleichen Matcher für den Typ dieser Eigenschaft zurück, sodass Sie Assertions miteinander verketten können.

ts
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();
Pager
Vorherige Seiteexpect
Nächste Seiteassert

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/api/expect-typeof

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2021-Present Vitest Team