Объект с динамическими ключами в TypeScript

Есть интерфейс объекта, где значения всех ключей типа string и одного boolean:

interface ObjectInterface {
    [key: string]: string;
    booleanKey: boolean;
}

Как сделать так, чтобы TypeScript не выдавал за ошибку, что значение ключа booleanKey должно быть string?

Для примера вот так все работает:

interface ObjectInterface {
        [key: string]: string | boolean;
        booleanKey: boolean;
    }

Ответы (3 шт):

Автор решения: HTMLProgrammer
interface BoolKey{
    booleanKey: boolean;
}

type ObjectInterface = BoolKey | {
    [key: string]: string
}

Разве что так. По другому не придумал

→ Ссылка
Автор решения: And R.

Ключи, которые заранее не определены нужно помещать в конец интерфейса.

interface ObjectInterface { booleanKey: boolean; [key: string]: string; }

→ Ссылка
Автор решения: Igor Vasiliev

Простите, но я не вижу вашу схему поэтому буду ориентироваться в слепую, судя по двум другим примерам выше, у вас объект, а они предлагают работать с массивом. Так же не увидел ошибку которую показывает TypeScript.

Если схема вот такая:

[
   {
       name: true,
       booleanKey: false
   },
   {
       data: 'PostgresQL',
       booleanKey: false
   }
]

Тогда нужно объявить, что у вас объект:

interface ObjectInterface {
   [key: string]: unknown | boolean;
   booleanKey: boolean;
}

interface Items extends Array<ObjectInterface>{}

Вот интерфейс Items и нужно передать там где вы ждёте объект, и там не обязательно string ожидать, где ключ точно будет строкой, более гибкий вариант. Напишите пожалуйста, правильно ли я вас понял. Заранее благодарю :)

→ Ссылка