Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is this new syntax gql`string` [duplicate]

const GET_DOGS = gql`
  {
    dogs {
      id
      breed
    }
  }
`;

I found this new syntax from here.

Can you explain this syntax? Where can I find detail about it?

like image 681
Nicolas S.Xu Avatar asked May 04 '18 17:05

Nicolas S.Xu


2 Answers

It's called a tagged template. Template literals (`...`) can be prefixed with a function name. Upon evaluation, this function will be called and the static and dynamic parts of the template literal are passed to the function. Example:

function foo(staticParts, dynamicParts) {
  console.log(staticParts, dynamicParts);
}

foo`this is a ${42} test`

Tagged templates can be used to create domain specific languages, such as in this example.

There are many questions around tagged templates you can learn more from.

like image 141
Felix Kling Avatar answered Nov 02 '22 12:11

Felix Kling


It's called a template literal.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

Not only does it allow you to do multi-line formatting like your example above, but it also makes it easier to mix expressions in with string content.

like image 28
kshetline Avatar answered Nov 02 '22 12:11

kshetline