{"action":"opened","issue":{"url":"https://api.github.com/repos/facebook/react/issues/4553","labels_url":"https://api.github.com/repos/facebook/react/issues/4553/labels{/name}","comments_url":"https://api.github.com/repos/facebook/react/issues/4553/comments","events_url":"https://api.github.com/repos/facebook/react/issues/4553/events","html_url":"https://github.com/facebook/react/issues/4553","id":98936788,"number":4553,"title":"Missing React.PropTypes.oneOfShape operator","user":{"login":"gajus","id":973543,"avatar_url":"https://avatars.githubusercontent.com/u/973543?v=3","gravatar_id":"","url":"https://api.github.com/users/gajus","html_url":"https://github.com/gajus","followers_url":"https://api.github.com/users/gajus/followers","following_url":"https://api.github.com/users/gajus/following{/other_user}","gists_url":"https://api.github.com/users/gajus/gists{/gist_id}","starred_url":"https://api.github.com/users/gajus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gajus/subscriptions","organizations_url":"https://api.github.com/users/gajus/orgs","repos_url":"https://api.github.com/users/gajus/repos","events_url":"https://api.github.com/users/gajus/events{/privacy}","received_events_url":"https://api.github.com/users/gajus/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-08-04T10:18:30Z","updated_at":"2015-08-04T10:18:30Z","closed_at":null,"body":"```j\r\nimport React from 'react';\r\n\r\nlet timeShape,\r\n    placeholderShape;\r\n\r\ntimeShape = React.PropTypes.shape({\r\n    type: React.PropTypes.oneOf(['time']).isRequired,\r\n    date2: React.PropTypes.number.isRequired,\r\n    url: React.PropTypes.string.isRequired,\r\n    position: React.PropTypes.number.isRequired\r\n});\r\n\r\nplaceholderShape = React.PropTypes.shape({\r\n    type: React.PropTypes.oneOf(['placeholder']).isRequired,\r\n    position: React.PropTypes.number.isRequired\r\n});\r\n\r\nexport default React.createClass({\r\n    propTypes: {\r\n        times: React.PropTypes.arrayOf(React.PropTypes.oneOfShape([timeShape, placeholderShape])).isRequired\r\n    },\r\n\r\n    render: function () {\r\n        return <div />;\r\n    }\r\n});\r\n```\r\n\r\nThere is no way to validate whether `times` is an array where is each property if `oneOfShape`. Whats even worst, if you use `oneOfType` in the latter example, it produces no error and does not validate the data as expected."}}