Почему в интерфейс не записывается тип boolean?

В TypeScript интерфейсы используются для определения структуры объектов и классов. Они устанавливают контракт, которому должны соответствовать объекты, реализующие интерфейс.

В TypeScript есть два основных типа - примитивные типы (число, строка, булево значение и т.д.) и пользовательские типы (интерфейсы, классы и перечисления).

По умолчанию все свойства в интерфейсе являются необязательными, то есть объекты, реализующие интерфейс, могут иметь только некоторые свойства. Они не обязаны иметь все свойства, указанные в интерфейсе.

Интерфейсы в TypeScript в основном используются для проверки соответствия структуры объектов. Тип boolean - один из примитивных типов и его значение может быть либо true, либо false. Таким образом, его использование в интерфейсе не дает дополнительной информации о структуре объекта, так как этот тип не указывает на конкретные поля или свойства.

Тем не менее, можно использовать булевые значения в качестве значений свойств объекта, описываемого интерфейсом, например:

interface MyInterface {
isTrue: boolean;
}

const myObject: MyInterface = {
isTrue: true,
};

Однако интерфейс в этом случае не ограничивает или проверяет наличие свойства isTrue у объекта. Это ограничение выполняется на уровне проверки типов, когда объект присваивается переменной с типом интерфейса.

Чтобы сделать свойство обязательным в интерфейсе, можно использовать символ вопроса (?) после названия свойства, чтобы указать, что оно является необязательным:

interface MyInterface {
isTrue?: boolean;
}

Теперь свойство isTrue необязательно для всех объектов, реализующих интерфейс MyInterface.