diff --git a/packages/dev/docs/src/types.js b/packages/dev/docs/src/types.js
index 51819c6e353..2474fca7368 100644
--- a/packages/dev/docs/src/types.js
+++ b/packages/dev/docs/src/types.js
@@ -132,6 +132,8 @@ export function Type({type}) {
return ;
case 'keyof':
return ;
+ case 'template':
+ return ;
default:
console.log('no render component for TYPE', type);
return null;
@@ -602,3 +604,25 @@ function ConditionalType({checkType, extendsType, trueType, falseType}) {
>
);
}
+
+function TemplateLiteral({elements}) {
+ return (
+ <>
+ {'`'}
+ {elements.map((element, i) => {
+ if (element.type === 'string' && element.value) {
+ return {element.value};
+ }
+
+ return (
+
+ {'${'}
+
+ {'}'}
+
+ );
+ })}
+ {'`'}
+ >
+ );
+}
diff --git a/packages/dev/parcel-transformer-docs/DocsTransformer.js b/packages/dev/parcel-transformer-docs/DocsTransformer.js
index 4633297788f..3893f2d66ec 100644
--- a/packages/dev/parcel-transformer-docs/DocsTransformer.js
+++ b/packages/dev/parcel-transformer-docs/DocsTransformer.js
@@ -483,6 +483,29 @@ module.exports = new Transformer({
}
if (path.isTSLiteralType()) {
+ if (t.isTemplateLiteral(path.node.literal)) {
+ let expressions = path.get('literal.expressions').map(e => processExport(e));
+ let elements = [];
+ let i = 0;
+ for (let q of path.node.literal.quasis) {
+ if (q.value.raw) {
+ elements.push({
+ type: 'string',
+ value: q.value.raw
+ });
+ }
+
+ if (!q.tail) {
+ elements.push(expressions[i++]);
+ }
+ }
+
+ return Object.assign(node, {
+ type: 'template',
+ elements
+ });
+ }
+
return Object.assign(node, {
type: typeof path.node.literal.value,
value: path.node.literal.value