fix: support number elements in jsx templates

This commit is contained in:
M. George Hansen 2020-06-02 15:38:39 -07:00
parent 5dfd2fd053
commit 1372ce16cb
Signed by: mgeorgehansen
SSH key fingerprint: SHA256:JlIGiQLPyQ2RHTH3a2oVlb20Xkh9Glr8DUF4YTXHJxM
3 changed files with 16 additions and 1 deletions

View file

@ -25,7 +25,13 @@ export interface HTMLElement {
/**
* All valid types of elements that can be rendered to HTML.
*/
export type Element = HTMLElement | string | boolean | undefined | null;
export type Element =
| HTMLElement
| string
| number
| boolean
| undefined
| null;
/**
* Custom HTMLElement factory that can be parameterized by props.

View file

@ -22,6 +22,9 @@ const renderElement = (elem: Element): string => {
if (elem == null || typeof elem === "boolean") {
return "";
}
if (typeof elem === "number") {
return elem.toString();
}
if (typeof elem === "string") {
return escapeHtml(elem);
}

View file

@ -61,4 +61,10 @@ testSuite("renderPage", ({ test, expect }) => {
"<!DOCTYPE html><html>There are three lights!</html>"
);
});
test("renders spliced number nodes", () => {
const nLights = 3;
const html = renderPage(<html>There are {nLights} lights!</html>);
expect(html).toEqual("<!DOCTYPE html><html>There are 3 lights!</html>");
});
});