var React = require('React'); type T1 = { } type T2 = { x: number } type T3 = { x: number, y: number } class C1 extends React.Component { // error } class C2 extends React.Component { // OK } // no need to add type arguments to React.Component class C3 extends React.Component { // OK static defaultProps: T1; props: T2; } class C4 extends React.Component { // OK, recommended // no need to declare defaultProps unless necessary props: T2; } class C5 extends React.Component { // error } class C6 extends React.Component { // OK, recommended static defaultProps: T2; props: T3; }