使用React。PropTypes在TypeScript React应用程序中是有意义的,或者这只是一个“腰带和背带”的例子?
因为组件类是用Props类型参数声明的:
interface Props {
// ...
}
export class MyComponent extends React.Component<Props, any> { ... }
添加有什么真正的好处吗
static propTypes {
myProp: React.PropTypes.string
}
类定义?
Typescript和PropTypes有不同的用途。Typescript在编译时验证类型,而proptype在运行时检查。
Typescript在你写代码的时候很有用:如果你给React组件传递了错误类型的参数,它会警告你,为函数调用自动补全等等。
当您测试组件如何与外部数据交互时,proptype非常有用,例如当您从API加载JSON时。PropTypes将帮助你调试(当在React的开发模式下)为什么你的组件失败,打印有用的消息,如:
Warning: Failed prop type: Invalid prop `id` of type `number` supplied to `Table`, expected `string`
尽管看起来Typescript和PropTypes做的是一样的事情,但它们实际上一点也不重叠。但是可以从Typescript自动生成PropTypes,这样你就不需要指定两次类型,参见示例:
https://github.com/milesj/babel-plugin-typescript-to-proptypes
https://github.com/grncdr/ts-react-loader#what-it-does
https://github.com/gcanti/prop-types-ts
Typescript和PropTypes有不同的用途。Typescript在编译时验证类型,而proptype在运行时检查。
Typescript在你写代码的时候很有用:如果你给React组件传递了错误类型的参数,它会警告你,为函数调用自动补全等等。
当您测试组件如何与外部数据交互时,proptype非常有用,例如当您从API加载JSON时。PropTypes将帮助你调试(当在React的开发模式下)为什么你的组件失败,打印有用的消息,如:
Warning: Failed prop type: Invalid prop `id` of type `number` supplied to `Table`, expected `string`
尽管看起来Typescript和PropTypes做的是一样的事情,但它们实际上一点也不重叠。但是可以从Typescript自动生成PropTypes,这样你就不需要指定两次类型,参见示例:
https://github.com/milesj/babel-plugin-typescript-to-proptypes
https://github.com/grncdr/ts-react-loader#what-it-does
https://github.com/gcanti/prop-types-ts
@types/prop-types中的“InferPropTypes”可用于从PropTypes定义创建类型定义。检查下面的例子
import React from "react";
import PropTypes, { InferProps } from "prop-types";
const ComponentPropTypes = {
title: PropTypes.string.isRequired,
createdAt: PropTypes.instanceOf(Date),
authorName: PropTypes.string.isRequired,
};
type ComponentTypes = InferProps<typeof ComponentPropTypes>;
const MyComponent = ({ authorName, createdAt, title }: ComponentTypes) => {
return <span>Blog Card</span>;
};
MyComponent.propTypes = ComponentPropTypes;
export default MyComponent;