-
-
Notifications
You must be signed in to change notification settings - Fork 154
Closed
Labels
GSSOC'24GirlScript Summer of Code | ContributorGirlScript Summer of Code | ContributorbugSomething isn't workingSomething isn't workinggssocGirlScript Summer of Code | ContributorGirlScript Summer of Code | Contributorlevel1GirlScript Summer of Code | Contributor's LevelsGirlScript Summer of Code | Contributor's Levels
Description
Where is the issue?
Why is this an issue?
In JavaScript, props are typically passed as plain objects, which can lead to errors and confusion when working with components that have specific prop requirements. However, it lacks of type safety and clarity when passing props to components in a codebase.
By defining types for component props, developers can enforce type safety and provide clear documentation for the expected props of a component. This helps catch potential errors at compile-time. It also improves code maintainability by making it easier to understand how components should be used and what props they accept.
How can I fix it?
Noncompliant code example
import PropTypes from 'prop-types';
function Hello({ firstname, lastname }) {
return <div>Hello {firstname} {lastname}</div>; // Noncompliant: 'lastname' type is missing
}
Hello.propTypes = {
firstname: PropTypes.string.isRequired
};
// Using legacy APIs
class Hello extends React.Component {
render() {
return <div>Hello {this.props.firstname} {this.props.lastname}</div>; // Noncompliant: 'lastname' type is missing
}
}
Hello.propTypes = {
firstname: PropTypes.string.isRequired,
};
Compliant solution
import PropTypes from 'prop-types';
function Hello({ firstname, lastname }) {
return <div>Hello {firstname} {lastname}</div>;
}
Hello.propTypes = {
firstname: PropTypes.string.isRequired,
lastname: PropTypes.string.isRequired,
};
// Using legacy APIs
class Hello extends React.Component {
render() {
return <div>Hello {this.props.firstname} {this.props.lastname}</div>;
}
}
Hello.propTypes = {
firstname: PropTypes.string.isRequired,
lastname: PropTypes.string.isRequired,
};
Activity
- Status Done / Not
More info
Documentation
- React Documentation - static propTypes
- Flow.js Documentation - React
Metadata
Metadata
Assignees
Labels
GSSOC'24GirlScript Summer of Code | ContributorGirlScript Summer of Code | ContributorbugSomething isn't workingSomething isn't workinggssocGirlScript Summer of Code | ContributorGirlScript Summer of Code | Contributorlevel1GirlScript Summer of Code | Contributor's LevelsGirlScript Summer of Code | Contributor's Levels
Type
Projects
Status
Done