我们正在为我们的内部应用程序创建一个组件库。该库的旧版本是用 and 编写的JavaScript
,JSX
因此我们propTypes
为所有组件声明了类型安全。
较新版本的组件库是用TypeScript
. 为了类型安全,我们使用PropTypes
了以下接口 -
interface Props {
size?: 'small' | 'large';
color?: string;
text?: string;
}
export class MyComponent extends React.Component<Props, any> { ... }
这工作得很好,因为使用这些组件的新项目也是用 TypeScript 编写的(我们确实d.ts
为所有组件类发布文件)。现在我们也需要更新旧项目中的组件库。由于他们没有使用 TypeScript,因此类型安全不起作用。他们仍然依赖旧的 propTypes 方式来保证类型安全。
//Usage of MyComponent
<MyComponent size={20} color={'red'} text={'HelloWorld'} />
//Size must be one of 'small' or 'large' not the numeric value.
所以我的问题是,如何处理在非 TypeScript 项目中使用 TypeScript(和 tsx)编写的组件的问题?
我已经确定了一些方法-
- 对 d.ts 文件使用一些解析器
- 为所有组件创建一个 HoC
- 手动为所有组件编写 propTypes 和接口。
还有其他更清洁、更少手动的方法吗?