Menghasilkan kode C89 yang dapat dibaca dari kode JS/TS.
Misalnya, javascript ini:
console . log ( "Hello world!" ) ;Transpiles ke kode C berikut:
#include <stdio.h>
int main () {
printf ( "Hello world!n" );
return 0 ;
}Tidak ada kode berlebihan yang sebenarnya tidak dibutuhkan yang pernah dihasilkan.
Output dapat dibaca mungkin dan sebagian besar peta dengan baik ke kode asli.
Contoh lain:
var obj = { key : "hello" } ;
obj [ "newKey" ] = "test" ;
console . log ( obj ) ;Transpiles ke kode C berikut:
#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 ;
}Pekerjaan yang sedang berlangsung: Ini bekerja, tetapi hanya sekitar 70%dari spesifikasi ES3 saat ini didukung: pernyataan dan ekspresi - 95%, objek bawaan - 17%.
Fitur yang tidak didukung termasuk, misalnya: float dan angka besar (semua angka adalah int16_t saat ini), eval , Date , Math , dll.
Informasi terperinci tentang fitur yang didukung dan direncanakan dapat ditemukan dalam cakupan.md.
Kontribusi dipersilakan! Lihat SRC/README.MD
Anda dapat mencobanya sendiri secara online:
Motivasi utama di balik proyek ini adalah untuk memecahkan masalah yang saat ini tidak dapat diprogram IoT dan wearables saat ini diprogram secara efisien dengan JavaScript.
Masalahnya, untuk perangkat IoT berkelanjutan yang dapat bekerja untuk waktu yang lama pada baterai tunggal, hal -hal seperti Raspberry Pi tidak akan melakukannya. Anda harus menggunakan mikrokontroler berdaya rendah, yang biasanya memiliki sedikit memori yang tersedia.
RAM berkisar secara harfiah dari 512 byte hingga 120kb, dan ROM/Flash dari 1KB hingga 4MB. Dalam kondisi seperti itu, bahkan penerjemah JS yang dioptimalkan seperti Jerryscript, Espruino atau V7 kadang -kadang terlalu banyak overhead dan biasanya menyebabkan peningkatan pembuangan baterai dan/atau tidak meninggalkan banyak sumber daya sistem ke program Anda.
Tentu saja, transpiler tidak dapat memetakan 100% bahasa JavaScript dan beberapa hal harus ditinggalkan, terutama eval . Namun, kesimpulan saat ini adalah, bahwa dimungkinkan untuk mentranspile sebagian besar bahasa.
Target transpilasi yang direncanakan:
Baris perintah:
npm install -g ts2c
Sintaksis:
ts2c < files to transpile >Node.js:
npm install ts2c
const ts2c = require ( "ts2c" ) ;
const cCode = ts2c . transpile ( "console.log('Hello world!')" ) ;
console . log ( cCode ) ;Di browser:
< 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 >