Skip to content

Suggestion: a precise return type of Node.appendChild() #12048

Closed
@ericzhangjx

Description

@ericzhangjx

TypeScript Version: 2.0.6

Code
From lib.es6.d.ts:

interface Node extends EventTarget {
  // ...
  appendChild(newChild: Node): Node;
  // ...
}

Test case:

document.createElement('div').appendChild(document.createElement('span'));

Expected behavior:
According to Node.appendChild() - MDN:

Syntax
var aChild = element.appendChild(aChild);
The returned value is the appended child.

The return type should be the type of the element being appended, in this case, HTMLSpanElement.

Actual behavior:
The appendChild(document.createElement('span')) just return with the type Node.

Suggestion
I wonder if it would be better using Generics to define the return type of appendChild(), such as:

interface Node extends EventTarget {
  appendChild<T>(newChild: T): T;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA bug in TypeScriptDomain: lib.d.tsThe issue relates to the different libraries shipped with TypeScriptFixedA PR has been merged for this issueHelp WantedYou can do this

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions