【问题标题】:Typescript Syntax in Apollo serverApollo 服务器中的打字稿语法
【发布时间】:2020-01-21 01:43:38
【问题描述】:
正如您在 appollo 服务器中所知道的,您可以通过将字符串传递给 gql 来定义服务器的架构。
const typeDefs = gql`
type Query {
getBtcRates: [BtcRate]
}
`'
但是什么是gql?是函数还是方法?
定义
export const gql: (
template: TemplateStringsArray | string,
...substitutions: any[]
) => DocumentNode = gqlTag;
对我来说它看起来更像一个函数,但我不知道这种语法,所以想知道它到底是什么以及为什么这样写。
【问题讨论】:
标签:
typescript
apollo
apollo-server
【解决方案1】:
gql 使用称为tagged templates 的语法,并且不是特定于 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!