# О пакете lab

<p class="description">Этот пакет содержит инкубационные компоненты, которые еще не готовы к переходу в основной пакет.</p>

Главное различие между пакетом lab и основным пакетом заключается в очерёдности выхода обновлений. Наличие отдельного пакета lab позволяет нам выпускать критические обновления по мере необходимости, в то время как основной пакет следует [политике "семь раз отмерь..."](https://material-ui.com/versions/#release-frequency).

По мере использования и тестирования компонентов сторонними разработчиками, разработчики, поддерживающие пакет, узнают больше о недостатках компонентов: недостающих фичах, проблемах универсального доступа, багах, проблемах в дизайне API, и т.д. Чем старше компонент, и чем более интенсивно он используется, тем менее вероятно проявление новых проблем, требующих критических обновлений.

Готовность компонента к перемещению в основной пакет определяется следующими критериями:

* Он должен **использоваться**. Команда Material-UI помимо прочих метрик использует Google Analytics, чтобы оценить использование каждого компонента. Если компонент пакета lab используется редко, это может говорить о том, что он не полностью работоспособен, либо об отсутствии спроса на этот компонент.
* Он должен соответствовать **качеству кода** компонентов основного пакета. Он не обязан быть совершенным, чтобы стать частью основного пакета, но компонент должен быть достаточно надёжным, чтобы сторонние разработчики могли на него положиться. 
    * Для каждого компонента требуется **определение типов**. Компоненты пакета lab на данный момент не обязаны быть типизированными, но это понадобится для перемещения компонента в основной пакет.
    * Требуется хорошее **покрытие тестами**. Некоторые компоненты пакета lab на данный момент не имеют всесторонних тестов.
* Может ли он использоваться как **рычаг**, стимулирующий пользователей к обновлению до последней мажорной версии? Чем менее разрозненно коммьюнити, тем лучше.
* Он должен иметь низкую вероятность **критических изменений** в обозримом будущем. К примеру, если ему не хватает новой фичи, которая скорее всего потребует критических изменений, предпочтительно будет отложить его добавление в основной пакет.

## Инструкция по установке

Установите пакет в каталог проекта командой:

```sh
// npm
npm install @material-ui/lab

// yarn
yarn add @material-ui/lab
```

Пакет lab зависит напрямую от пакета основных компонентов. Если Material-UI ещё не использовался вашем проекте, вы можете установить его командой:

```sh
// with npm
npm install @material-ui/core

// with yarn
yarn add @material-ui/core
```

## TypeScript

Чтобы получить возможность пользоваться [переопределением CSS](/customization/globals/#css) и [изменением свойств по умолчанию](/customization/globals/#default-props), разработчикам, использующим TypeScript, нужно импортировать следующие типы. Чтобы расширить структуру темы по умолчанию для использования компонентов доступных в пакете lab, внутри используется [аугментация модулей](/guides/typescript/#customization-of-theme).

```tsx
import type '@material-ui/lab/themeAugmentation';

const theme = createMuiTheme({
  overrides: {
    MuiTimeline: {
      root: {
        backgroundColor: 'red',
      },
    },
  },
});
```