janit/typescript-generator-bundle

一个提供从PHP类生成TypeScript接口命令的Symfony Bundle

安装: 397

依赖者: 0

建议者: 0

安全: 0

星星: 16

关注者: 3

分支: 5

开放问题: 2

类型:symfony-bundle

v1.0 2017-11-04 13:40 UTC

This package is auto-updated.

Last update: 2024-09-06 19:56:47 UTC


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),您可以将目标目录更改为其他位置。