ผลิตรหัส C89 ที่อ่านได้จากรหัส JS/TS
ตัวอย่างเช่น JavaScript นี้:
console . log ( "Hello world!" ) ;transpiles เป็นรหัส C ต่อไปนี้:
#include <stdio.h>
int main () {
printf ( "Hello world!n" );
return 0 ;
}ไม่มีการสร้างรหัสมากเกินไปที่ไม่จำเป็นจริง ๆ
เอาต์พุตสามารถอ่านได้มากที่สุดและส่วนใหญ่แมปกับรหัสต้นฉบับ
อีกตัวอย่างหนึ่ง:
var obj = { key : "hello" } ;
obj [ "newKey" ] = "test" ;
console . log ( obj ) ;transpiles เป็นรหัส C ต่อไปนี้:
#include <stdlib.h>
#include <assert.h>
#include <stdio.h>
struct obj_t {
const char * key ;
const char * newKey ;
};
static struct obj_t * obj ;
int main ( void ) {
obj = malloc ( sizeof ( * obj ));
assert ( obj != NULL );
obj -> key = "hello" ;
obj -> newKey = "test" ;
printf ( "{ " );
printf ( "key: "%s"" , obj -> key );
printf ( ", " );
printf ( "newKey: "%s"" , obj -> newKey );
printf ( " }n" );
free ( obj );
return 0 ;
}การทำงานระหว่างดำเนินการ: รองรับได้ แต่ประมาณ 70%ของข้อกำหนด ES3 เท่านั้นที่ได้รับการสนับสนุน: คำสั่งและนิพจน์ - 95%, วัตถุในตัว - 17%
คุณสมบัติที่ไม่รองรับ ได้แก่ ตัวอย่างเช่น: ลอยและตัวเลขจำนวนมาก (ตัวเลขทั้งหมดเป็น int16_t ในปัจจุบัน), eval , Date , Math ฯลฯ
ข้อมูลรายละเอียดเกี่ยวกับคุณสมบัติที่รองรับและคุณสมบัติสามารถพบได้ใน Coverage.md
ยินดีต้อนรับ! ดู src/readme.md
คุณสามารถลองใช้ตัวเองออนไลน์:
แรงจูงใจหลักที่อยู่เบื้องหลังโครงการนี้คือการแก้ปัญหาที่ IoT และอุปกรณ์สวมใส่ไม่สามารถตั้งโปรแกรมได้อย่างมีประสิทธิภาพด้วย JavaScript
สิ่งนี้คือสำหรับอุปกรณ์ IoT ที่ยั่งยืนที่สามารถทำงานได้เป็น เวลานาน ในแบตเตอรี่เดียวสิ่งต่าง ๆ เช่น Raspberry Pi จะไม่ทำ คุณจะต้องใช้ไมโครคอนโทรลเลอร์พลังงานต่ำซึ่งมักจะมีหน่วยความจำน้อยมาก
RAM มีช่วงอย่างแท้จริง จาก 512 ไบต์ ถึง 120KB และ ROM/Flash จาก 1KB ถึง 4MB ในเงื่อนไขดังกล่าวแม้แต่ล่าม JS ที่ได้รับการปรับปรุงเช่น Jerryscript, Espruino หรือ V7 บางครั้งก็มีค่าใช้จ่ายมากเกินไปและมักจะนำไปสู่การระบายแบตเตอรี่ที่เพิ่มขึ้นและ/หรือไม่ทิ้งทรัพยากรระบบจำนวนมากไว้ในโปรแกรมของคุณ
แน่นอนว่า transpiler ไม่สามารถแมป 100% ของภาษาจาวาสคริปต์และบางสิ่งต้องถูกทิ้งไว้โดยเฉพาะอย่างยิ่ง eval ถึงกระนั้นข้อสรุปในปัจจุบันก็คือมันเป็นไปได้ที่จะ transpile ภาษาส่วนใหญ่
เป้าหมาย transpilation ที่วางแผนไว้:
บรรทัดคำสั่ง:
npm install -g ts2c
ไวยากรณ์:
ts2c < files to transpile >node.js:
npm install ts2c
const ts2c = require ( "ts2c" ) ;
const cCode = ts2c . transpile ( "console.log('Hello world!')" ) ;
console . log ( cCode ) ;ในเบราว์เซอร์:
< script src =" https://unpkg.com/typescript " > </ script >
< script src =" ts2c.bundle.js " > </ script >
< script >
var cCode = ts2c . transpile ( "console.log('Hello world!')" ) ;
alert ( cCode ) ;
</ script >