Skip to content
Vitest 1
Main Navigation GuíaAPIConfiguraciónAvanzado
1.6.1
0.34.6

Español

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

Español

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

Apariencia

Sidebar Navigation

Guía

Por qué Vitest

Empezando

Características

Área de Trabajo

Interfaz de Línea de Comandos

Filtrado de Pruebas

Informes

Cobertura

Capturas instantáneas

Mocking

Pruebas de Tipos

Interfaz de Usuario de Vitest

Modo Navegador

Pruebas en el código fuente

Contexto de prueba

Entorno de Pruebas

Extender Matchers

Integración con IDEs

Depuración

Comparaciones con otros Ejecutores de Pruebas

Guía de Migración

Errores frecuentes

Mejora del rendimiento

API

Referencia de la API de pruebas

Funciones Mock

Vi

expect

expectTypeOf

assert

assertType

Configuración

Administración del archivo de configuración de Vitest

Configuración de Vitest

En esta página

expectTypeOf ​

WARNING

Durante el tiempo de ejecución, esta función no hace nada. Para habilitar la verificación de tipos, no olvide pasar el flag --typecheck.

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

not ​

  • Tipo: ExpectTypeOf

Puedes negar cualquier aserción utilizando la propiedad .not.

toEqualTypeOf ​

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

Este comparador verifica si los tipos son idénticos. No fallará si dos objetos tienen diferentes valores pero el mismo tipo. Sin embargo, fallará si un objeto carece de una propiedad.

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 ​

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

Este comparador verifica si el tipo esperado extiende al tipo proporcionado. Es diferente de toEqualTypeOf y más similar a toMatchObject() de expect. Con este comparador, puedes verificar si un objeto es compatible con un tipo.

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 ​

  • Tipo: ExpectTypeOf<ExtractedUnion>

Puedes usar .extract para refinar los tipos para pruebas posteriores, extrayendo un tipo específico de una unión.

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 }>() // extracts the last type from a union
  .toEqualTypeOf<{
    xs?: CSSProperties;
    sm?: CSSProperties;
    md?: CSSProperties;
  }>();

expectTypeOf(getResponsiveProp(cssProperties))
  .extract<unknown[]>() // extracts an array from a union
  .toEqualTypeOf<CSSProperties[]>();

WARNING

Si no se encuentra ningún tipo coincidente en la unión, .extract devolverá never.

exclude ​

  • Tipo: ExpectTypeOf<NonExcludedUnion>

Puedes usar .exclude para eliminar tipos de una unión para pruebas posteriores.

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

WARNING

Si no se encuentra ningún tipo que no deba excluirse en la unión, .exclude devolverá never.

returns ​

  • Tipo: ExpectTypeOf<ReturnValue>

Puedes usar .returns para extraer el tipo de valor de retorno de una función.

ts
import { expectTypeOf } from 'vitest';

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

WARNING

Si se usa en un tipo que no es una función, devolverá never, impidiendo el encadenamiento con otros comparadores.

parameters ​

  • Tipo: ExpectTypeOf<Parameters>

Puedes extraer los tipos de los argumentos de una función con .parameters para realizar aserciones sobre ellos. Los parámetros se devuelven como un array.

ts
import { expectTypeOf } from 'vitest';

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

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

WARNING

Si se usa en un tipo que no es una función, devolverá never, impidiendo el encadenamiento con otros comparadores.

TIP

También puedes usar el comparador .toBeCallableWith como una aserción más expresiva.

parameter ​

  • Tipo: (nth: number) => ExpectTypeOf

Puedes extraer el tipo de un argumento específico de una función con .parameter(number) para realizar aserciones sobre él. El índice del parámetro comienza en 0.

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

Si se usa en un tipo que no es una función, devolverá never, impidiendo el encadenamiento con otros comparadores.

constructorParameters ​

  • Tipo: ExpectTypeOf<ConstructorParameters>

Puedes extraer los tipos de los parámetros del constructor como un array y realizar aserciones sobre ellos con este método.

ts
import { expectTypeOf } from 'vitest';

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

WARNING

Si se usa en un tipo que no es una clase o función constructora, devolverá never, impidiendo el encadenamiento con otros comparadores.

TIP

También puedes usar el comparador .toBeConstructibleWith como una aserción más expresiva.

instance ​

  • Tipo: ExpectTypeOf<ConstructableInstance>

Esta propiedad da acceso a comparadores que pueden usarse con una instancia del tipo proporcionado.

ts
import { expectTypeOf } from 'vitest';

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

WARNING

Si se usa en un tipo que no es una clase o función constructora, devolverá never, impidiendo el encadenamiento con otros comparadores.

items ​

  • Tipo: ExpectTypeOf<T>

Puedes obtener el tipo de los elementos de un array con .items para realizar más aserciones.

ts
import { expectTypeOf } from 'vitest';

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

resolves ​

  • Tipo: ExpectTypeOf<ResolvedPromise>

Este comparador extrae el tipo del valor resuelto de una Promise, para realizar otras aserciones.

ts
import { expectTypeOf } from 'vitest';

async function asyncFunc() {
  return 123;
}

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

WARNING

Si se usa en un tipo que no es una promesa, devolverá never, impidiendo el encadenamiento con otros comparadores.

guards ​

  • Tipo: ExpectTypeOf<Guard>

Este comparador extrae el tipo de guarda (por ejemplo, v is number), para que puedas realizar afirmaciones sobre él.

ts
import { expectTypeOf } from 'vitest';

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

WARNING

Si el valor no es una función de guarda, devuelve never, por lo que no podrás encadenarlo con otros comparadores.

asserts ​

  • Tipo: ExpectTypeOf<Assert>

Este comparador extrae el tipo de aserción (por ejemplo, assert v is number), para que puedas realizar afirmaciones sobre él.

ts
import { expectTypeOf } from 'vitest';

function assertNumber(v: any): asserts v is number {
  if (typeof v !== 'number') throw new TypeError('¡Error!');
}

expectTypeOf(assertNumber).asserts.toBeNumber();

WARNING

Si el valor no es una función de aserción, devuelve never, impidiendo el encadenamiento con otros comparadores.

toBeAny ​

  • Tipo: () => void

Este comparador verifica si el tipo es any. Si el tipo es más específico, la prueba fallará.

ts
import { expectTypeOf } from 'vitest';

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

toBeUnknown ​

  • Tipo: () => void

Este comparador verifica si el tipo es unknown.

ts
import { expectTypeOf } from 'vitest';

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

toBeNever ​

  • Tipo: () => void

Este comparador verifica si el tipo es never.

ts
import { expectTypeOf } from 'vitest';

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

toBeFunction ​

  • Tipo: () => void

Este comparador verifica si el tipo es una función.

ts
import { expectTypeOf } from 'vitest';

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

toBeObject ​

  • Tipo: () => void

Este comparador verifica si el tipo es un objeto.

ts
import { expectTypeOf } from 'vitest';

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

toBeArray ​

  • Tipo: () => void

Este comparador verifica si el tipo es un Array<T>.

ts
import { expectTypeOf } from 'vitest';

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

toBeString ​

  • Tipo: () => void

Este comparador verifica si el tipo es un string.

ts
import { expectTypeOf } from 'vitest';

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

toBeBoolean ​

  • Tipo: () => void

Este comparador verifica si el tipo es boolean.

ts
import { expectTypeOf } from 'vitest';

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

toBeVoid ​

  • Tipo: () => void

Este comparador verifica si el tipo es void.

ts
import { expectTypeOf } from 'vitest';

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

toBeSymbol ​

  • Tipo: () => void

Este comparador verifica si el tipo es un symbol.

ts
import { expectTypeOf } from 'vitest';

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

toBeNull ​

  • Tipo: () => void

Este comparador verifica si el tipo es null.

ts
import { expectTypeOf } from 'vitest';

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

toBeUndefined ​

  • Tipo: () => void

Este comparador verifica si el tipo es undefined.

ts
import { expectTypeOf } from 'vitest';

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

toBeNullable ​

  • Tipo: () => void

Este comparador verifica si el tipo especificado puede ser null o undefined.

ts
import { expectTypeOf } from 'vitest';

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

toBeCallableWith ​

  • Tipo: () => void

Este comparador asegura que la función proporcionada puede ser invocada con un conjunto específico de parámetros.

ts
import { expectTypeOf } from 'vitest';

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

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

WARNING

Si se usa en un tipo que no es una función, devolverá never, impidiendo el encadenamiento con otros comparadores.

toBeConstructibleWith ​

  • Tipo: () => void

Este comparador asegura que se puede crear una nueva instancia de un tipo utilizando un conjunto específico de parámetros del constructor.

ts
import { expectTypeOf } from 'vitest';

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

WARNING

Si se usa en un tipo que no es una clase o función constructora, devolverá never, impidiendo el encadenamiento con otros comparadores.

toHaveProperty ​

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

Este comparador verifica si una propiedad existe en el objeto proporcionado. Si existe, también devuelve el mismo conjunto de comparadores para el tipo de esta propiedad, permitiendo encadenar aserciones.

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
Anteriorexpect
Siguienteassert

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors

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

Publicado bajo la licencia MIT.

Copyright (c) 2024 Mithril Contributors