ts2php
under development
TypeScript 转 PHP
A Compiler which can compile TypeScript to PHP.
Usage
compiler
import {compile} from 'ts2php';
const result = compile(filePath, options);
runtime
部分功能依赖一个 PHP 的类库,需要在 PHP 工程中引入
Some features are implemented by a PHP helper class, which need to be included in your PHP code.
require_once("/path/to/ts2php/dist/runtime/Ts2Php_Helper.php");
CLI
Quick Start:
$ npm i -g ts2php
$ ts2php ./a.ts # 编译输出到 stdout
使用配置并输出到文件:
$ cat config.js
module.exports = {
emitHeader: false
};
$ ts2php -c config.js src/ -o output/
更多选项:
$ ts2php --show-diagnostics # 输出诊断信息
$ ts2php --emit-header # 输出头部信息
$ ts2php -h # 更多功能请查看帮助
update ts2php version
Same TS code with different version of ts2php may result to different PHP code. When updating the version of ts2php, we should check the result PHP code manually. To simplify this process, we recommend to use ts2php-diff-checker. Specify two version of ts2php, and some source TS code, ts2php-diff-checker will generate diff info directly.
ts2php-check <pattern> <old-version> <new-version> [destination]
Features
Javascript Syntax
for
/for of
/for in
if
/else if
/else
switch
while
/do while
Class
typeof
delete
destructuring
template string
object computed property
object shorthand property
enum
anonymous function inherit variables
rest function arguments
spread
exception
For more, see feature test markdowns: Javascript Syntax
Core JavaScript API
- parseInt 只接收一个参数
- parseFloat
- encodeURIComponent
- decodeURIComponent
- encodeURI
- __dirname
- __filename
- Date
- Date.now
- Date.prototype.getTime
- Date.prototype.getDate
- Date.prototype.getDay
- Date.prototype.getFullYear
- Date.prototype.getHours
- Date.prototype.getMinutes
- Date.prototype.getMonth
- Date.prototype.getSeconds
- Date.prototype.setDate
- Date.prototype.setFullYear
- Date.prototype.setHours
- Date.prototype.setMinutes
- Date.prototype.setMonth
- Date.prototype.setSeconds
- Date.prototype.setTime
- Object
- Object.assign
- Object.keys
- Object.values
- Object.freeze
- Object.prototype.hasOwnProperty
- JSON
- JSON.stringify 只接收一个参数
- JSON.parse 只接收一个参数
- console
- console.log
- console.info 转成 var_dump
- console.error
- String
- String.prototype.replace 第二个参数只支持 string,不支持 Function
- String.prototype.trim
- String.prototype.trimRight
- String.prototype.trimLeft
- String.prototype.toUpperCase
- String.prototype.toLowerCase
- String.prototype.split
- String.prototype.indexOf
- String.prototype.substring
- String.prototype.repeat
- String.prototype.startsWidth
- String.prototype.endsWidth
- String.prototype.includes
- String.prototype.padStart
- String.prototype.match 只支持正则和字符串匹配
- Array
- Array.isArray
- Array.prototype.length
- Array.prototype.filter 回调函数只接收第一个参数
- Array.prototype.push
- Array.prototype.pop
- Array.prototype.shift
- Array.prototype.unshift
- Array.prototype.concat
- Array.prototype.reverse
- Array.prototype.splice
- Array.prototype.reverse
- Array.prototype.map
- Array.prototype.forEach
- Array.prototype.indexOf
- Array.prototype.join
- Array.prototype.some
- Array.prototype.every
- Array.prototype.find
- Array.prototype.findIndex
- Array.prototype.sort
- Number
- Number.isInterger
- Number.prototype.toFixed
- Number.prototype.toString
- Math
- Math.abs
- Math.acos
- Math.acosh
- Math.asin
- Math.asinh
- Math.atan
- Math.atanh
- Math.atan2
- Math.cbrt
- Math.ceil
- Math.clz32
- Math.cos
- Math.cosh
- Math.exp
- Math.expm1
- Math.floor
- Math.hypot
- Math.log
- Math.log1p
- Math.log10
- Math.max
- Math.min
- Math.pow
- Math.random
- Math.round
- Math.sin
- Math.sinh
- Math.sqrt
- Math.tan
- Math.tanh
Thanks to
Based on Typescript compiler