首页 > 解决方案 > Apollo 服务器中的打字稿语法

问题描述

正如您在 apollo 服务器中所知道的,您可以通过将字符串传递给 gql 来定义服务器的模式。

const typeDefs = gql`
type Query {
  getBtcRates: [BtcRate]
}
`'

但是什么是gql?是函数还是方法?

是定义

export const gql: (
  template: TemplateStringsArray | string,
  ...substitutions: any[]
) => DocumentNode = gqlTag;

对我来说,它看起来更像一个函数,但我不知道这种语法,所以想知道它到底是什么以及为什么这样写。

标签: typescriptapolloapollo-server

解决方案


gql正在使用称为标记模板的语法,并且不是 TypeScript 特定的。再举一个例子,styled-components也依赖于这种语法。

从文档:

标签允许您使用函数解析模板文字。标记函数的第一个参数包含一个字符串值数组。其余参数与表达式有关。

这是如何工作的一个基本示例:

var variable = 'world';

function myTag(strings, exp) {
  var str0 = strings[0]; // "Hello "
  var str1 = strings[1]; // "!"

  return `${str0}${exp}${str1}`;
}

var output = myTag`Hello ${ variable }!`;

console.log(output);
// Hello world!


推荐阅读