Какие основные типы данных в JavaScript ты знаешь?

«Какие основные типы данных в JavaScript ты знаешь?» — вопрос из категории JavaScript, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При написании автотестов на JavaScript (например, с WebDriverIO или Playwright) я работаю со следующими типами данных:

Примитивные типы (передаются по значению):

  1. number — для целых и дробных чисел. Использую для счетчиков, таймаутов, проверок числовых значений на странице.
  2. string — строки. Это основной тип для локаторов CSS/XPath, текстовых проверок (expect(element).toHaveText('some string')).
  3. boolean — логический тип true/false. Постоянно встречается в условиях и результатах проверок (например, element.isDisplayed()).
  4. undefined — значение неинициализированной переменной. Важно отличать от null при отладке.
  5. null — явное указание на "отсутствие значения".
  6. symbol (ES6+) — уникальные идентификаторы. В тестах встречаю реже, обычно во внутренней логике фреймворков.
  7. bigint (ES2020+) — для работы с очень большими целыми числами. В веб-тестировании практически не используется.

Объектный тип (передается по ссылке):

  1. object — коллекция свойств. Сюда же относятся массивы ([]), функции, даты. В тестах это часто объект страницы (Page Object), конфигурация или ответ от API.

Практический пример из тестов:

// Типы в контексте автотеста
const timeout = 10000; // number
const locator = '#submit-button'; // string
const isVisible = await $(locator).isDisplayed(); // boolean (ожидаемый результат проверки)
let pageObject; // undefined, пока не присвоено значение
const config = { baseUrl: 'https://test.env', headless: true }; // object
const apiResponse = await apiClient.get('/users'); // object (с данными JSON)

// Проверка типа
console.log(typeof timeout); // "number"
console.log(typeof isVisible); // "boolean"
console.log(Array.isArray(apiResponse.data)); // true (проверка, что data — массив)