From 37536e5fa7a15fbc851040e09beb465bc22d9cf3 Mon Sep 17 00:00:00 2001 From: David Fox Date: Wed, 22 Feb 2017 19:34:22 -0600 Subject: [PATCH] Use ?: instead of |undefined in .d.ts files --- lib/tsd-jsdoc/publish.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/tsd-jsdoc/publish.js b/lib/tsd-jsdoc/publish.js index 20dcc3fb4..22c124420 100644 --- a/lib/tsd-jsdoc/publish.js +++ b/lib/tsd-jsdoc/publish.js @@ -314,6 +314,18 @@ function writeInterface(element) { // handles a single element of any understood type function handleElement(element, parent, insideClass) { + if (element.optional !== true && element.type && element.type.names && element.type.names.length) { + for (let i = 0; i < element.type.names.length; i++) { + if (element.type.names[i].toLowerCase() === 'undefined') { + // This element is actually optional. Set optional to true and + // remove the 'undefined' type + element.optional = true; + element.type.names.splice(i, 1); + i--; + } + } + } + if (seen[element.longname]) return true; if (isClassLike(element)) { @@ -460,7 +472,10 @@ function handleMember(element, parent) { } else write(element.kind === "constant" ? "const " : "var "); - write(element.name, ": "); + write(element.name); + if (element.optional) + write("?"); + write(": "); if (element.type && element.type.names && /^Object\b/i.test(element.type.names[0]) && element.properties) { writeln("{");