wovosoft / laravel-typescript
将 Laravel 模型转换为 TypeScript 接口/类型
v1.1.0
2024-03-21 08:03 UTC
Requires
- php: >=8.2
- composer/class-map-generator: >=1.1.0
- laravel/framework: ^11.0
This package is auto-updated.
Last update: 2024-09-21 09:20:18 UTC
README
将 Laravel 模型转换为 TypeScript 接口/类型
注意事项
此包在某些情况下会将模型实例化为以检索其casts、属性、关系。因此,如果您的模型在__constructor方法中有一些敏感操作,请小心使用此包。
安装
通过 Composer
composer require --dev wovosoft/laravel-typescript
发布配置
运行以下命令。这将发布 laravel-typescript.php
配置文件。
php artisan vendor:publish --provider="Wovosoft\LaravelTypescript\LaravelTypescriptServiceProvider"
配置配置
return [ 'output_path' => resource_path('js/types/models.d.ts'), 'source_dir' => app_path('Models'), /** * Custom attributes should have return types defined. * But if it is not, then the return type should be this type. * And this value should be php supported return types. * like primitive types or any other classes */ "custom_attributes" => [ "fallback_return_type" => "string" ] ];
使用方法
运行以下命令以生成 TypeScript 类型。
php artisan laravel-typescript:transform
生成的内容将写入配置的位置。
高级使用
有时模型可能存储在不同的位置,例如在某些包中、某些目录中等。在这种情况下,请检查 ./src/LaravelTypescript.php 的源代码。
您可以直接实例化此类,并为其他目录中的模型生成类型。
use Wovosoft\LaravelTypescript\Facades\LaravelTypescript; $dirs = [ "models" => app_path("Models"), "hrmPerson" => base_path("packages/wovosoft/hrms-person/src/Models"), ]; foreach ($dirs as $name => $dir) { LaravelTypescript::generate( sourceDir : $dir, outputPath: resource_path("js/types/$name.d.ts") ); echo "Generated $name.d.ts"; }
关于新模型属性的通知
对于新模型属性,应定义闭包函数的返回类型,否则,将生成 config('laravel-typescript.custom_attributes.fallback_return_type')
类型的值,作为相关属性的值。
use \Illuminate\Database\Eloquent\Model; use \Illuminate\Database\Eloquent\Casts\Attribute; class User extends Model{ public function isActive() : Attribute { return Attribute::get(fn(): bool =>$this->status==='active'); } public function getIsInactiveAttribute():bool { return $this->status==="inactive"; } }
变更日志
有关最近更改的更多信息,请参阅 changelog。
贡献
请参阅 contributing.md 了解详细信息,以及待办事项列表。
安全
如果您发现任何安全问题,请在 Issues Tracker 中创建问题。
鸣谢
许可证
MIT。请参阅 许可证文件 了解更多信息。