Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(types): add (and fix) evaluateHandle types #6130

Merged
merged 1 commit into from Jul 1, 2020

Commits on Jul 1, 2020

  1. feat(types): add (and fix) evaluateHandle types

    This change started as a small change to pull types from DefinitelyTyped over to
    Puppeteer for the `evaluateHandle` function but instead ended up also fixing
    what looks to be a long standing issue with our existing documentation.
    
    `evaluateHandle` can in fact return an `ElementHandle` rather than a `JSHandle`.
    Note that `ElementHandle` extends `JSHandle` so whilst the docs are technically
    correct (all ElementHandles are JSHandles) it's confusing because JSHandles
    don't have methods like `click` on them, but ElementHandles do.
    
    if you return something that is an HTML element:
    
    ```
    const button = page.evaluateHandle(() => document.querySelector('button'));
    // this is an ElementHandle, not a JSHandle
    ```
    
    Therefore I've updated the original docs and added a large explanation to the
    TSDoc for `page.evaluateHandle`.
    
    In TypeScript land we'll assume the function will return a `JSHandle` but you
    can tell TS otherwise via the generic argument, which can only be `JSHandle`
    (the default) or `ElementHandle`:
    
    ```
    const button = page.evaluateHandle<ElementHandle>(() => document.querySelector('button'));
    ```
    jackfranklin committed Jul 1, 2020
    Copy the full SHA
    9c9a59e View commit details
    Browse the repository at this point in the history