janit / typescript-generator-bundle
一个提供从PHP类生成TypeScript接口命令的Symfony Bundle
v1.0
2017-11-04 13:40 UTC
Requires
- nikic/php-parser: ^3.1.0
README
这是一个添加命令以从PHP类提取TypeScript接口的Symfony Bundle。基于Martin Vseticka的示例,此Bundle使用PHP-Parser库和注解。目前功能非常基础,但确实可行。
TypeScript是在JavaScript之上添加强类型和其他功能的高级语言。自动生成的类很有用,例如当使用简单的JSON API与JavaScript客户端通信时。这样,您可以通过简单的方式为API响应获得类型。
目前此Bundle与Symfony框架紧密耦合,但可以将其提取出来。您可以在此基础上构建,或将其作为构建完全不同东西的灵感来源。
安装
作为Symfony Bundle,您需要首先使用composer将包添加到项目中
$ composer req janit/typescript-generator-bundle
之后,您需要在您的app/AppKernel.php
文件中激活此Bundle
new Janit\TypeScriptGeneratorBundle\TypeScriptGeneratorBundle()
完成后,您应该在控制台中看到添加的命令,并可以运行
$ php bin/console typescript:generate-interfaces
这将产生一个错误,因为该命令期望fromDir
参数指定扫描PHP类的位置。
注意:这些说明适用于Symfony Standard Edition (3.3),但此Bundle也应与Symfony Flex一起工作。
使用方法
该命令递归地扫描目录中的所有.php
文件。它只为具有适当注解的文件生成类型定义(接口)。
要生成接口,在src/AppBundle/Entity/Person.php
中创建一个新类,并输入以下内容
<?php namespace AppBundle\Entity; /** * @TypeScriptMe */ class Person { /** * @var string */ public $firstName; /** * @var string */ public $lastName; /** * @var int */ public $age; }
一旦设置好,您就可以使用src/
参数运行此命令
$ php bin/console typescript:generate-interfaces src/
这将生成以下文件typescript/Person.d.ts
,内容如下
interface Person {
firstName: string,
lastName: string,
age: number
}
declare var Person: Person;
如果您提供另一个参数(toDir
),您可以将目标目录更改为其他位置。