bolzer / ts-const-enum
一个命令行工具,用于从您的PHP常量生成TypeScript常量
0.2
2021-07-28 22:05 UTC
Requires
- php: >=8.0
- symfony/console: ^5.3
- symfony/validator: ^5.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpspec/prophecy: ~1.0
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
- vimeo/psalm: ^4.8
This package is auto-updated.
Last update: 2024-08-29 05:44:14 UTC
README
描述
此工具将转换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 }
安装
- 需要依赖项
composer require bolzer/ts-const-enum
- 在根目录(其中包含vendor文件夹)中创建一个配置文件
touch .ts-const-enum-config.php
- 将以下内容添加到之前创建的文件中,指定输出路径。
<?php declare(strict_types=1); use Bolzer\TsConstEnum\Configuration\Config; return (new Config()) ->setOutputPath(__DIR__ . '/generated/constants.ts') ;
- 查看配置类以获取更多配置选项。
- 在您的PHP代码中使用提供的属性
Constant
和Enum
注释一些常量和数组
示例
<?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" ]; }
- 运行工具的二进制文件
composer dump-autoload -o --quiet php ./vendor/bin/ts-const-enum.php generate
- 开始使用常量
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', }