介绍
@apollographql/graphql-language-service-types
是一个Apollo GraphQL的语言服务类型包。这个包适用于编写类似于graphql-language-service
这样的插件,以便使用这些插件来提高IDE的GraphQL支持水平。
本文将介绍如何使用@apollographql/graphql-language-service-types
,以便为GraphQL编写语言服务插件。
安装
可以在npm仓库中使用以下命令来安装@apollographql/graphql-language-service-types
:
npm install --save-dev @apollographql/graphql-language-service-types
使用
@apollographql/graphql-language-service-types
导出了许多用于语言服务插件的类型和接口。在本节中,我们将介绍一些核心接口以及如何使用它们。
Diagnostic
接口
该接口描述了一个语法或语义错误的严重级别。该接口使用了TypeScript的枚举类型,枚举名称遵循语义化版本控制规范。
enum DiagnosticSeverity { Error = 1, Warning = 2, Information = 3, Hint = 4 }
DiagnosticRelatedInformation
接口
该接口描述了与某个诊断消息相关的更详细的信息。例如,如果有一条错误消息,DiagnosticRelatedInformation
可以用于指定应该如何解决该错误。
interface DiagnosticRelatedInformation { message: string; location: SourceLocation }
DiagnosticWithLocation
接口
该接口描述了拥有关联位置的诊断消息。这个接口将Diagnostic
和DiagnosticRelatedInformation
组合在一起,以生成一个包含错误消息和源代码位置的对象。
interface DiagnosticWithLocation { severity: DiagnosticSeverity; message: string; locations: ReadonlyArray<SourceLocation>; relatedInformation?: ReadonlyArray<DiagnosticRelatedInformation>; }
SourceLocation
接口
该接口描述在GraphQL源代码中的位置。该接口具有line
和column
两个属性。
interface SourceLocation { line: number; column: number; }
示例代码
下面是一个简单的GraphQL插件,可将包含特定字符(“TODO”)的查询字符串标记为警告。
-- -------------------- ---- ------- ------ - -------------------- ----------------------- ------------------- ---------- ---------------- ------------- ------- - ---- ------------------------------------------------ ----- ---------------- ---------------------- - - --------- --------------------------- -------- ------- --- ---- ----- -- ---- -------- ---------- --- -- ------ ----- ---------------------- - -------------- ----------- ------------------------ - ----- ---------- - ---------- ----- ---- ------ - ----------------- ----------- --------------- --- ----- ------ - --- -- ----------- -- --------- - ------ ---------------------------- ------------------------- ----------- -- - -- ---------------- --- ---------------------- - ----- ---------- ------ - ---------------- ----- --------- -------------- - ---------------------- -- --------------------------- -------- - -- --- ------- - ---------- ------------------- ---------- -- ----- -------------- ------- --------------- --- --- - - ------ ---- -- ---- - ------ ------------------ ------------- -- - ----- -------- - -------------------- ----- - ----- ------ - - --------- ------ - --------- ------------------------- -------- -------------- ---------- -- ----- ------- ------ - - --- -- --- - -
结论
@apollographql/graphql-language-service-types
是一个神奇的npm包,提供了非常有用的接口和类型,可用于创建Apollo GraphQL的语言服务插件。虽然本篇文章仅介绍了几个核心接口,但读者可以使用这些接口作为构建企业级语言服务插件的入门。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f39547fdbf7be33b2566fd3