Объект с динамическими ключами в TypeScript
Есть интерфейс объекта, где значения всех ключей типа string и одного boolean:
interface ObjectInterface {
[key: string]: string;
booleanKey: boolean;
}
Как сделать так, чтобы TypeScript не выдавал за ошибку, что значение ключа booleanKey должно быть string?
Для примера вот так все работает:
interface ObjectInterface {
[key: string]: string | boolean;
booleanKey: boolean;
}
Ответы (3 шт):
interface BoolKey{
booleanKey: boolean;
}
type ObjectInterface = BoolKey | {
[key: string]: string
}
Разве что так. По другому не придумал
Ключи, которые заранее не определены нужно помещать в конец интерфейса.
interface ObjectInterface { booleanKey: boolean; [key: string]: string; }
Простите, но я не вижу вашу схему поэтому буду ориентироваться в слепую, судя по двум другим примерам выше, у вас объект, а они предлагают работать с массивом. Так же не увидел ошибку которую показывает TypeScript.
Если схема вот такая:
[
{
name: true,
booleanKey: false
},
{
data: 'PostgresQL',
booleanKey: false
}
]
Тогда нужно объявить, что у вас объект:
interface ObjectInterface {
[key: string]: unknown | boolean;
booleanKey: boolean;
}
interface Items extends Array<ObjectInterface>{}
Вот интерфейс Items и нужно передать там где вы ждёте объект, и там не обязательно string ожидать, где ключ точно будет строкой, более гибкий вариант. Напишите пожалуйста, правильно ли я вас понял. Заранее благодарю :)