将JSX元素的属性抽象为对象的类型是什么?

时间:2018-02-20 15:48:27

标签: reactjs typescript jsx

我对打字稿仍然比较绿色,而且为了让它更具功能性,这已成为一种好奇心。

如果我将html输入的属性抽象为自己的对象,那么 fileInputAttrs 的类型是什么?我查看了JSX.IntrinsicElements等,但似乎找不到<input type='file'>

的原生属性的接口
render() {
    const fileInputAttrs: SomeType = {
        type: 'file',
        multiple: true,
        ref: (input: HTMLInputElement) => this.elFileInput = input,
        onChange: () => this.handleSelectedFile()
    };

    return (
        <div className={'blah'}>
            <input  {...fileInputAttrs} />
        </div>
    );
}

1 个答案:

答案 0 :(得分:1)

您可以查看React definition file。在这种情况下,它将是React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>,即:

const fileInputAttrs: React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> = {
    type: 'file',
    multiple: true,
    ref: (input: HTMLInputElement) => this.elFileInput = input,
    onChange: () => this.handleSelectedFile()
};