diff --git a/new-docs/puppeteer.elementhandle._eval.md b/new-docs/puppeteer.elementhandle._eval.md
index f0c8b8717eb..4de0423e19c 100644
--- a/new-docs/puppeteer.elementhandle._eval.md
+++ b/new-docs/puppeteer.elementhandle._eval.md
@@ -11,7 +11,7 @@ If `pageFunction` returns a Promise, then `frame.$eval` would wait for the promi
Signature:
```typescript
-$eval(selector: string, pageFunction: EvaluateFn | string, ...args: SerializableOrJSHandle[]): Promise;
+$eval(selector: string, pageFunction: (element: Element, ...args: unknown[]) => ReturnType | Promise, ...args: SerializableOrJSHandle[]): Promise>;
```
## Parameters
@@ -19,12 +19,12 @@ $eval(selector: string, pageFunction: EvaluateFn | strin
| Parameter | Type | Description |
| --- | --- | --- |
| selector | string | |
-| pageFunction | [EvaluateFn](./puppeteer.evaluatefn.md) \| string | |
+| pageFunction | (element: Element, ...args: unknown\[\]) => ReturnType \| Promise<ReturnType> | |
| args | [SerializableOrJSHandle](./puppeteer.serializableorjshandle.md)\[\] | |
Returns:
-Promise<ReturnType>
+Promise<[WrapElementHandle](./puppeteer.wrapelementhandle.md)<ReturnType>>
## Example
diff --git a/new-docs/puppeteer.elementhandle.aselement.md b/new-docs/puppeteer.elementhandle.aselement.md
index 0abe674ad14..670b0f824b8 100644
--- a/new-docs/puppeteer.elementhandle.aselement.md
+++ b/new-docs/puppeteer.elementhandle.aselement.md
@@ -7,9 +7,9 @@
Signature:
```typescript
-asElement(): ElementHandle | null;
+asElement(): ElementHandle | null;
```
Returns:
-[ElementHandle](./puppeteer.elementhandle.md) \| null
+[ElementHandle](./puppeteer.elementhandle.md)<ElementType> \| null
diff --git a/new-docs/puppeteer.elementhandle.md b/new-docs/puppeteer.elementhandle.md
index 9d479637f7e..09e5e97085b 100644
--- a/new-docs/puppeteer.elementhandle.md
+++ b/new-docs/puppeteer.elementhandle.md
@@ -9,7 +9,7 @@ ElementHandle represents an in-page DOM element.
Signature:
```typescript
-export declare class ElementHandle extends JSHandle
+export declare class ElementHandle extends JSHandle
```
Extends: [JSHandle](./puppeteer.jshandle.md)
@@ -34,6 +34,8 @@ ElementHandle prevents the DOM element from being garbage-collected unless the h
ElementHandle instances can be used as arguments in [Page.$eval()](./puppeteer.page._eval.md) and [Page.evaluate()](./puppeteer.page.evaluate.md) methods.
+If you're using TypeScript, ElementHandle takes a generic argument that denotes the type of element the handle is holding within. For example, if you have a handle to a `