nolanos/ laravel-model-typescript-transfomer
为您的 Eloquent 模型生成 TypeScript 定义
v1.0.0
2024-09-05 12:53 UTC
Requires
- php: ^8.2
- laravel/framework: ^9.0|^10.0|^11.0
- spatie/laravel-typescript-transformer: ^2.4
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.4
- pestphp/pest: ^2.35
README
此包使用spatie/laravel-typescript-transformer为 Laravel Eloquent 模型生成 TypeScript 定义。
安装
通过 Composer 安装
composer require nolanos/laravel-model-typescript-transformer
通过以下方式更新您的 config/typescript-transformer.php
配置文件...
- 将
ModelTypeScriptCollector
添加到collectors
数组中。 - 将
ModelTransformer
添加到transformers
数组中。
'collectors' => [ // ... Nolanos\LaravelModelTypescriptTransformer\ModelTypeScriptCollector::class, ], 'transformers' => [ // Etc.... Nolanos\LaravelModelTypescriptTransformer\ModelTransformer::class, ],
用法
通过运行以下命令生成 TypeScript 定义
php artisan typescript:generate
工作原理
识别属性
ModelTransformer
通过查看数据库表中的列来识别给定 Model
的属性,然后根据模型的 $hidden
和 $visible
属性过滤列。
将数据库类型映射到 TypeScript 类型
属性类型是通过将数据库列类型映射到 TypeScript 类型来确定的。以下映射被使用
注意:未知列类型将被映射到 unknown
,并跟有一个注释说明数据库类型。
可为空类型
如果列是可空的,则 TypeScript 类型将后缀为 | null
。
示例
让我们看看一个在 PostgreSQL 数据库中的简单用户模型示例。
CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL , password VARCHAR(255), active BOOLEAN NOT NULL, created_at TIMESTAMP, updated_at TIMESTAMP );
User
模型可能看起来像这样
class User extends Model { protected $hidden = ['password']; }
将生成以下 TypeScript 定义
declare namespace App.Models { export interface User { id: number name: string email: string active: boolean created_at: string | null updated_at: string | null } }
局限性
此包有一些局限性。
查看 问题 以查看缺少的内容。
开发
设置
git clone git@github.com:nolanos/laravel-model-typescript-transfomer.git
cd laravel-model-typescript-transformer
composer install
运行测试
composer test
发布新版本
要发布包的新版本,您需要创建一个新标签并将其推送到存储库。
git tag vx.x.x git push origin vx.x.x
转到 Packagist 并点击 "更新" 以更新包。