Как добавить атрибуты к существующим элементам HTML в TypeScript / JSX?
Кто-нибудь знает, как правильно добавить / расширить все собственные атрибуты HTML-элементов с помощью пользовательских?
Сдокументация TypeScript для слияния интерфейсовЯ думал, что я мог бы просто сделать это:
interface HTMLElement {
block?: BEM.Block;
element?: BEM.Element;
modifiers?: BEM.Modifiers;
}
<div block="foo" />; // error
Но я получаю следующую ошибку Intellisense в vscode 1.6.1 (последняя версия):
[ts] Свойство 'block' не существует для типа 'HTMLProps'.
HTMLProps
на что они ссылаютсяReact.HTMLProps<T>
иdiv
Элемент объявлен для использования следующим образом:
namespace JSX {
interface IntrinsicElements {
div: React.HTMLProps<HTMLDivElement>
}
}
Я попытался изменитьdiv
, но безрезультатно.
Связанные с:https://github.com/Microsoft/TypeScript/issues/11684
Редактировать: Вот что в итоге сработало для меня:
declare module 'react' {
interface HTMLAttributes<T> extends DOMAttributes<T> {
block?: string
element?: string
modifiers?: Modifiers // <-- custom interface
}
}