nolanos/laravel-model-typescript-transfomer

为您的 Eloquent 模型生成 TypeScript 定义

v1.0.0 2024-09-05 12:53 UTC

This package is auto-updated.

Last update: 2024-09-06 11:44:55 UTC


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 并点击 "更新" 以更新包。