相关疑难解决方法(0)

如何在TypeScript/JSX中向现有HTML元素添加属性?

任何人都知道如何正确添加/扩展自定义的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)

jsx typescript

16
推荐指数
2
解决办法
9339
查看次数

ReactJS-目录选择对话框不起作用

我想要在我的 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)

javascript jsx typescript reactjs typescript-typings

4
推荐指数
1
解决办法
3556
查看次数