是否可以编写非React运行时使用的类型但通用的功能组件?

时间:2018-03-21 17:32:17

标签: javascript reactjs typescript

我们希望分发组件,意图是任何兼容的运行时都可以使用它们。这些组件只是用JSX编写的函数,并转换为通用工厂函数h。因此,输出应该(在大多数情况下)与React,Preact,Inferno,Hyperapp,vhtml等兼容。例如,这是一个简单的<Title />组件:

import { h } from 'runtime';

const Title = ({ title, url }) => (
    <div className="component-heading">
        <a href={url} className="component-heading-link">
            {title}
        </a>
    </div>
);

export default Title;

我们希望使用类型来装饰我们的组件,主要是为了让消费者在将属性传递给他们时获得帮助。如果我们借用React类型,它可能看起来像这样:

import { SFC } from 'react';
import { h } from 'runtime';

export interface Props { … }

const Title: SFC<Props> = ({ title, url, premium }) => (
    <div className="component-heading">
        <a href={url} className="component-heading-link">
            {title}
        </a>
    </div>
);

export default Title;

如果消费者使用TypeScript和React,这是非常好的,但如果他们使用Preact或任何其他兼容的运行时,类型将发生冲突。

因此,是否可以编写通用性足以供非React运行时使用的功能组件?

0 个答案:

没有答案