任何人都知道如何正确添加/扩展自定义的HTML元素属性?
使用TypeScript文档来合并接口,我想我可以这样做:
interface HTMLElement {
block?: BEM.Block;
element?: BEM.Element;
modifiers?: BEM.Modifiers;
}
<div block="foo" />; // error
Run Code Online (Sandbox Code Playgroud)
但我在vscode 1.6.1(最新)中收到以下Intellisense错误:
[ts]'HTMLProps'类型中不存在属性'block'.
在HTMLProps它们指是React.HTMLProps<T>与div元素被声明为使用它像这样:
namespace JSX {
interface IntrinsicElements {
div: React.HTMLProps<HTMLDivElement>
}
}
Run Code Online (Sandbox Code Playgroud)
我试图重新宣布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
}
}
Run Code Online (Sandbox Code Playgroud) 我想要在我的 React 应用程序中有一个目录选择对话框。我遵循了这个可能对某些人有效但对我无效的线索。获取编译时错误为
类型“DetailedHTMLProps<InputHTMLAttributes, HTMLInputElement>”上不存在属性“directory”。
我将 React 升级到最新的 RC 版本 17.rc.1,认为可能有一个错误修复,但没有成功。
编辑
@Scratch'N'Purr 在评论中建议,有一个技巧可以使用标签在文件末尾添加此脚本以进行目录选择。
declare module 'react' {
interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes<T> {
// extends React's HTMLAttributes
directory?: string;
webkitdirectory?:string;
}
}
Run Code Online (Sandbox Code Playgroud)