bolzer/ts-const-enum

一个命令行工具,用于从您的PHP常量生成TypeScript常量

0.2 2021-07-28 22:05 UTC

This package is auto-updated.

Last update: 2024-08-29 05:44:14 UTC


README

maintained

描述

此工具将转换PHP标量常量(这些常量带有提供的属性注释)到TypeScript常量,并从注释的PHP一维常量数组生成TypeScript枚举。如果您想在TypeScript代码中的条件中引用值,这可能会很有用。您可以轻松导入生成的常量。这比直接声明值有许多优点。如果常量的值发生变化,您的代码不会轻易损坏。如果您更改PHP常量的名称,TypeScript代码将不会编译,除非您更改了旧常量名称的所有出现。

如果您使用大量的JS/TS框架并基于值/属性进行条件渲染,这特别有用。常量默认以声明类的前缀开始,后跟 __ 和常量名称。您可以在属性级别提供别名。请注意,为了使常量位于一个文件中,您必须具有唯一的名称/别名。

用例

之前

if (reflection.type === 16) {
    // Do something when true
}

之后

import {TARGET_CLASS_CONSTANT} from "./constants";

if (reflection.type === TARGET_CLASS_CONSTANT) {
    // Do something when true
}

安装

  1. 需要依赖项
composer require bolzer/ts-const-enum
  1. 在根目录(其中包含vendor文件夹)中创建一个配置文件
touch .ts-const-enum-config.php
  1. 将以下内容添加到之前创建的文件中,指定输出路径。
<?php declare(strict_types=1);

use Bolzer\TsConstEnum\Configuration\Config;

return (new Config())
    ->setOutputPath(__DIR__ . '/generated/constants.ts')
;
  1. 查看配置类以获取更多配置选项。
  2. 在您的PHP代码中使用提供的属性 ConstantEnum 注释一些常量和数组

示例

<?php declare(strict_types=1);

namespace Test\Example;

use Bolzer\TsConstEnum\Attributes\Constant;use Bolzer\TsConstEnum\Attributes\Enum;

class ExampleClass {
    #[Constant(alias: "Test")]
    private const TEST = "test";
    
    #[Enum]
    private const TEST_2 = [
        self::TEST => "value"
    ];
}
  1. 运行工具的二进制文件
composer dump-autoload -o --quiet
php ./vendor/bin/ts-const-enum.php generate
  1. 开始使用常量

PHP中的临时枚举是什么?

目前PHP中没有枚举。随着PHP 8.2的发布,这将发生变化。然而,这些枚举也需要转换为TypeScript枚举。在此期间,我使用类似这些的构造

class Membership {
    public const FREE = "free";
    public const PREMIUM = "premium";
    
    public const TYPES = [
        self::FREE,
        self::PREMIUM
    ];  
}

常量 "TYPES" 是一个临时枚举。这些构造将被转换。这将在TypeScript中转换为以下枚举

export enum Membership_TYPES { 
    'FREE' = 'free', 
    'PREMIUM' = 'premium',
}