Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 在多个html元素中包含JSX属性_Typescript_Jsx - Fatal编程技术网

Typescript 在多个html元素中包含JSX属性

Typescript 在多个html元素中包含JSX属性,typescript,jsx,Typescript,Jsx,我想将一些JSX属性添加到多个其他元素中 我需要包括的属性示例: class?: string; id?: string; style?: string; 示例元素: namespace JSX { interface IntrinsicElements { element1: { att1: string; } element2: { att2: string; } element3: { att3: string; } } }

我想将一些JSX属性添加到多个其他元素中

我需要包括的属性示例:

class?: string;
id?: string;
style?: string;
示例元素:

namespace JSX {
    interface IntrinsicElements {
        element1: { att1: string; }
        element2: { att2: string; }
        element3: { att3: string; }
    }
}
它应该是什么样子的:

namespace JSX {
    interface IntrinsicElements {
        element1: { att1: string; class?: string; id?: string; style?: string; }
        element2: { att2: string; class?: string; id?: string; style?: string; }
        element3: { att3: string; class?: string; id?: string; style?: string; }
    }
}

有没有一种方法可以在不需要重复代码的情况下实现这一点?

找到了一种解决方案,使用
|
操作符可以合并两个接口

通过这种方式,您可以为所有基本属性(例如class、id、style)定义一个接口,并将其与特定属性接口(例如{att1:string;})合并

下面是我的解决方案代码:

namespace JSX {
    interface BaseAttributes {
        class?: string;
        id?: string;
        style?: string;
    }
    interface IntrinsicElements {
        element1: BaseAttributes | { att1: string; }
        element2: BaseAttributes | { att2: string; }
        element3: BaseAttributes | { att3: string; }
    }
}