What is @jest/types?
The @jest/types package provides TypeScript definitions and utility types for Jest, a popular JavaScript testing framework. It includes types for Jest configuration, global variables, and other utilities that help in creating type-safe test environments and extending Jest functionalities.
What are @jest/types's main functionalities?
Config
Defines types for Jest configuration options. This allows for type-safe Jest configuration files, ensuring that any configuration options passed to Jest are valid.
{"globals": {"myGlobal": "value"}, "testMatch": ["**/__tests__/**/*.js?(x)", "**/?(*.)+(spec|test).js?(x)"]}
Global
Provides types for Jest's global variables and functions, such as 'describe', 'it', and 'expect'. This is useful for creating custom global setups or mocks in a type-safe manner.
"declare var jest: jest.Jest"
Mock
Includes types for Jest's mocking utilities, enabling developers to create and manipulate mocks with full TypeScript support.
"const mockedFunction: jest.Mock = jest.fn()"
Other packages similar to @jest/types
@types/jest
Before Jest provided its own TypeScript definitions, @types/jest was the go-to package for Jest types. It serves a similar purpose by providing type definitions for Jest, but @jest/types is more up-to-date and maintained by the Jest team.
ts-jest
While ts-jest is primarily a TypeScript preprocessor for Jest, allowing Jest to understand TypeScript files, it also includes some utility types for configuration. However, @jest/types focuses solely on providing comprehensive type definitions for Jest's API.
jest-mock-extended
jest-mock-extended provides extended types and utilities for mocking in Jest, particularly with TypeScript. It complements @jest/types by offering more detailed mock creation and manipulation capabilities, though @jest/types provides the foundational type definitions.
@jest/types
This package contains shared types of Jest's packages.
If you are looking for types of Jest globals, you can import them from @jest/globals
package:
import {describe, expect, it} from '@jest/globals';
describe('my tests', () => {
it('works', () => {
expect(1).toBe(1);
});
});
If you prefer to omit imports, a similar result can be achieved installing the @types/jest package. Note that this is a third party library maintained at DefinitelyTyped and may not cover the latest Jest features.
Another use-case for @types/jest
is a typed Jest config as those types are not provided by Jest out of the box:
import type {Config} from '@jest/types';
const config: Config.InitialOptions = {
};
export default config;