mirror of
https://github.com/wassname/DefinitelyTyped.git
synced 2026-09-09 11:13:57 +08:00
[react] ReactTestUtils custom typeguards
This commit is contained in:
Vendored
+11
-4
@@ -104,10 +104,17 @@ declare namespace __React {
|
||||
export function mockComponent(
|
||||
mocked: MockedComponentClass, mockTagName?: string): typeof TestUtils;
|
||||
|
||||
export function isElementOfType(
|
||||
element: ReactElement<any>, type: ReactType): boolean;
|
||||
export function isDOMComponent(instance: ReactInstance): boolean;
|
||||
export function isCompositeComponent(instance: ReactInstance): boolean;
|
||||
export function isElementOfType<T extends HTMLElement>(
|
||||
element: ReactElement<any>, type: string): element is ReactHTMLElement<T>;
|
||||
export function isElementOfType<P extends DOMAttributes, T extends Element>(
|
||||
element: ReactElement<any>, type: string): element is DOMElement<P, T>;
|
||||
export function isElementOfType<P>(
|
||||
element: ReactElement<any>, type: SFC<P>): element is SFCElement<P>;
|
||||
export function isElementOfType<P, T extends Component<P, {}>, C extends ComponentClass<P>>(
|
||||
element: ReactElement<any>, type: ClassType<P, T, C>): element is CElement<P, T>;
|
||||
|
||||
export function isDOMComponent(instance: ReactInstance): instance is Element;
|
||||
export function isCompositeComponent(instance: ReactInstance): instance is Component<any, any>;
|
||||
export function isCompositeComponentWithType(
|
||||
instance: ReactInstance,
|
||||
type: ComponentClass<any>): boolean;
|
||||
|
||||
+19
-2
@@ -220,9 +220,12 @@ domNode = ReactDOM.findDOMNode(domNode);
|
||||
// React Elements
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
var type = element.type;
|
||||
var type: React.ComponentClass<Props> = element.type;
|
||||
var elementProps: Props = element.props;
|
||||
var key = element.key;
|
||||
var key: React.Key = element.key;
|
||||
|
||||
var t: React.ReactType<any>;
|
||||
var name = typeof t === "string" ? t : t.displayName;
|
||||
|
||||
//
|
||||
// React Components
|
||||
@@ -543,6 +546,20 @@ var foundComponent: ModernComponent = TestUtils.findRenderedComponentWithType(
|
||||
var foundComponents: ModernComponent[] = TestUtils.scryRenderedComponentsWithType(
|
||||
inst, ModernComponent);
|
||||
|
||||
// ReactTestUtils custom type guards
|
||||
|
||||
var emptyElement: React.ReactElement<{}>;
|
||||
if (TestUtils.isElementOfType(emptyElement, StatelessComponent)) {
|
||||
emptyElement.props.foo;
|
||||
}
|
||||
|
||||
var anyInstance: Element | React.Component<any, any>;
|
||||
if (TestUtils.isDOMComponent(anyInstance)) {
|
||||
anyInstance.getAttribute("className");
|
||||
} else if (TestUtils.isCompositeComponent(anyInstance)) {
|
||||
anyInstance.props;
|
||||
}
|
||||
|
||||
//
|
||||
// TransitionGroup addon
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
Vendored
+1
-1
@@ -174,12 +174,12 @@ declare namespace __React {
|
||||
contextTypes?: ValidationMap<any>;
|
||||
childContextTypes?: ValidationMap<any>;
|
||||
defaultProps?: P;
|
||||
displayName?: string;
|
||||
}
|
||||
|
||||
interface ClassicComponentClass<P> extends ComponentClass<P> {
|
||||
new(props?: P, context?: any): ClassicComponent<P, any>;
|
||||
getDefaultProps?(): P;
|
||||
displayName?: string;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user