¿Cómo agrego atributos a elementos HTML existentes en TypeScript / JSX?
¿Alguien sabe cómo agregar / extender correctamente todos los atributos de elementos HTML nativos con los personalizados?
Conla documentación de TypeScript para fusionar interfaces, Pensé que podría hacer esto:
interface HTMLElement {
block?: BEM.Block;
element?: BEM.Element;
modifiers?: BEM.Modifiers;
}
<div block="foo" />; // error
Pero obtengo el siguiente error de Intellisense en vscode 1.6.1 (último):
[ts] La propiedad 'bloque' no existe en el tipo 'HTMLProps'.
losHTMLProps
a lo que se refieren esReact.HTMLProps<T>
y eldiv
Se declara que el elemento lo usa así:
namespace JSX {
interface IntrinsicElements {
div: React.HTMLProps<HTMLDivElement>
}
}
Traté de volver a declarar eldiv
, pero fue en vano.
Relacionado:https://github.com/Microsoft/TypeScript/issues/11684
Editar: Esto es lo que terminó funcionando para mí:
declare module 'react' {
interface HTMLAttributes<T> extends DOMAttributes<T> {
block?: string
element?: string
modifiers?: Modifiers // <-- custom interface
}
}