Typescript выдает ошибку, когда я создаю новое свойство для интерфейса, имеющего подпись индекса.
Я новичок в машинописи и конвертирую файлы .js в файлы .ts. У меня возникли некоторые проблемы при создании интерфейса для следующего объекта.
{
header: ['The DevTools framework',],
extensions: {
adInfo: {
description: 'Provides ad-related information.',
ui: 'yes',
loaded: typeof dt.adInfo !== 'undefined' ? 'yes' : 'no',
}
name: 'dt', //NOTE: Having trouble with this property.
},
footer: ['new tool is available',],
};
Созданный мною интерфейс:
interface config {
header: string[];
extensions: {
[keys: string]: {
description: string;
ui: string;
loaded?: string;
};
};
footer: string[];
}
Первой проблемой была машинопись с жалобой на имя;в частности,
Type 'string' is not assignable to {description: string; ui: string; loaded?: string;};
Затем я попытался обновить значение подписи индекса как объекта или строки, см. ниже.
interface config {
header: string[];
extensions: {
[keys: string]: {
description: string;
ui: string;
loaded?: string;
} | string
};
footer: string[];
}
Это вызвало некоторые неожиданные проблемы ... Где бы я ни пытался деконструировать объект расширений, машинописный текст выдает следующую ошибку:
Property 'description' does not exist on type 'string | { description: string; ui: string; loaded: string; help: any[]; name: string; 'compatible with this browser'?: boolean | undefined; }
Я только что удалил свойство name из объекта, но я хотел бы знать, почему, когдаУ меня есть оператор ИЛИ, машинопись не принимает определение объекта. Кажется, это только строка.
Заранее спасибо.