hoppinger/ts_generator

基于REST资源的TypeScript代码生成器的Drupal模块

安装次数 10,121

依赖项: 0

建议者: 0

安全性: 0

星标: 3

关注者: 5

分支: 1

公开问题: 0

类型:drupal-module

2.0.1 2020-08-06 15:25 UTC

This package is auto-updated.

Last update: 2024-09-05 14:06:17 UTC


README

这是一个Drupal模块,用于为特定实体生成TypeScript类型定义。它还可以选择性地生成清洁的目标类型定义和将对象从初始类型转换为目标类型的函数(解析器)。

安装

composer require hoppinger/ts_generator

版本

版本2.0.0与Drupal 9兼容。

用法

生成器作为一个需要配置文件的Drush命令运行。

创建以下内容的.yml文件

target_directory: client/generated
entities:
  input:
    - node
    - taxonomy_term
generate_parser: true

此文件指示生成器在配置文件位置的相对目录client/generated中生成文件,为nodetaxonomy_term实体生成类型,并生成目标类型和相应的解析器。

使用以下命令触发生成

cd [PROJECT DIRECTORY]/web
../vendor/bin/drush ts_generator:generate [PATH TO CONFIGURATION FILE]

类型的实际使用

以下是如何使用这些类型的一个示例。当然,您不必局限于这种方法。

import {
  InputEntity,
  ParsedInputEntity,
} from "./generated/types"

import {
  input_entity_parser,
  input_entity_guard
} from "./generated/parser"

export type Result<T> = T | "error"

export async function drupalGetEntity(alias: string): Promise<Result<ParsedInputEntity>> {
  const res = await fetch(`/${alias}?format=_json`), { method: "get", credentials: "include" })
  if (!res.ok) return "error"
  
  const json = await res.json()
  if (!input_entity_guard(json)) return "error"

  const parsed = input_entity_parser(json as InputEntity)
  return parsed
}

待办事项

  • 编写更多关于使用方法的文档
  • 编写关于内部工作原理和扩展生成器的方法的文档