kestrelwp/docblock-typescript-transformer
Composer 安装命令:
composer require kestrelwp/docblock-typescript-transformer
包简介
Transform PHP class DocBlocks to TypeScript types.
README 文档
README
A package to transform PHP DocBlock class property annotations to TypeScript interfaces.
Provides a transformer for the Spatie TypeScript Transformer package.
Usage
use Kestrel\DocblockTypescriptTransformer\Transformers\ClassDocBlockTransformer; use Spatie\TypeScriptTransformer\TypeScriptTransformer; use Spatie\TypeScriptTransformer\TypeScriptTransformerConfig; $transformerConfig = TypeScriptTransformerConfig::create() ->transformers( [ ClassDocBlockTransformer::create(), // ... other transformers ] ) $transformer = TypeScriptTransformer::create( $transformerConfig );
In a PHP class, use @property and the @typescript annotations to ensure TypeScript Transformer will generate the correct TypeScript interface.
/** * Product * * @property-read int $id product ID * @property string $name product name * @property string $description description * @property Brand $brand * @property ProductCategory[] $categories * @property array<string, mixed> $metadata {@ts-optional} * @property array<string, mixed> $internal_metadata {@ts-hidden} * @property array<string, Brand> $brand_map {@ts-record string, Brand} * @property float $price {@ts-literal number} * * @typescript */ class Product extends Model {}; #[TypeScript] enum Brand : string { case APPLE = 'apple'; case SAMSUNG = 'samsung'; case GOOGLE = 'google'; }; #[TypeScript] enum ProductCategory: string { case PHONE = 'phone'; case TABLET = 'tablet'; case LAPTOP = 'laptop'; case WIDGET = 'widget'; };
Will result in this:
export type Release = { id: number; name: string; description: string; brand: Brand; categories: ProductCategory[]; metadata?: { [key: string]: any }; brand_map: Record<string, Brand> price: number } export type Brand = "apple" | "samsung" | "google"; export type ProductCategory = "phone" | "tablet" | "laptop" | "widget";
Special tags
@ts-optional
Marks the property as optional in TypeScript.
@ts-hidden
Hides the property from the TypeScript interface.
@ts-record
Generates a Record type in TypeScript. The first argument is the key type, the second argument is the value type.
@ts-literal
Generates a literal type in TypeScript. The argument is the literal type, exactly as it should appear in TypeScript.
kestrelwp/docblock-typescript-transformer 适用场景与选型建议
kestrelwp/docblock-typescript-transformer 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12.34k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 01 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 kestrelwp/docblock-typescript-transformer 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kestrelwp/docblock-typescript-transformer 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 12.34k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 33
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-01-08