acelords/laravel-model-ts-type

该包可以实现根据你的模型生成 TypeScript 类型

v1.0.1 2024-08-24 14:38 UTC

This package is auto-updated.

Last update: 2024-09-24 14:54:38 UTC


README

基于您的模型生成 TypeScript 类型。

用法

安装

使用 composer 安装此包

composer require --dev scrumble-nl/laravel-model-ts-type

生成类型

php artisan types:generate {--modelDir=} {--outputDir=} {--model=} {--noKebabCase}

附加选项

如果您想更改默认值,可以发布配置文件并将其更改为您喜欢的设置。

注意:请勿忘记在 tsconfig.json 中将目录添加到 typeroots

它做什么?

此包将 Laravel 的所有(几乎)魔法功能都考虑在内。它按照以下步骤生成类型

  1. 从数据库中检索所有字段(仅支持 MySQL/MariaDB)并将它们映射到默认类型(字符串、数字等)
  2. 为模型添加关系,它们将指向生成的相关类型
  3. 为模型添加属性获取器
  4. 检查 casts 属性
  5. 删除所有在 hidden 属性中的字段

示例输出

export type Company = {
    id: number;
    name: string;
    created_at: string /* Date */ | null;
    updated_at: string /* Date */ | null;
    slug: string;
    welcome_message: string | null;
    contact_information: string | null;
    main_color: string | null;
    logo_src: string | null;
    user_field: any[];
    language: any[];
    team_site: any[];
    is_api_enabled: boolean;
    kaizen_user_field: string;
    faqs?: Faq[] | null;
    users?: User[] | null;
    team_properties: TeamProperty[] | null;
    editor_images: EditorImage[] | null;
    meta_data?: any[];
};

路线图

  • 添加测试(进行中)
  • 为打包模型生成类型
  • 创建用于生成单个模型类型的命令
  • 实现关系文档块的未限定名称

贡献

如果您想看到对包的添加/更改,您始终欢迎添加一些代码或改进它。

Scrumble

此产品最初由 Scrumble 为内部使用开发。由于我们使用了大量开源包,我们希望回馈社区。我们希望这能帮助您像其他人帮助我们一样前进!