Mieli Państwo prawo zgłosić błąd firmie Microsoft i nie mieli racji, aby zamknąć ją jako wontfix.
Do czasu naprawienia jest, oto sposób obejścia tego problemu. Wklej następujący tekst do pliku i zapisać go jako shebangify
:
#!/usr/bin/env node
var fs = require('fs');
var path = process.argv[2];
var data = "#!/usr/bin/env node\n\n";
data += fs.readFileSync(path);
fs.writeFileSync(path, data);
(NB Aby utrzymać tę odpowiedź zwięzłe, powyższy kod nie ma żadnego sprawdzania błędów lub inne udoskonalenia, więc używać na własne ryzyko lub używać this zamiast również zobaczyć this SO question uzyskać więcej informacji o poprzedzenie plików)
Dodać plik wykonywalny z przy użyciu terminala, aby przejść do katalogu pliku i wykonanie:..
$ chmod +x shebangify
Gdy masz CRE w programie do pisania (np. nazywa myscript.ts
), który chcesz skompilować i zamieni się w skrypcie (np zwany myscript
), należy to zrobić wykonując sekwencję wzdłuż tych linii w terminalu:
$ tsc --out myscript myscript.ts ; ./shebangify myscript ; chmod +x myscript
Napisz plik wykonywalny w JS i po prostu wymagaj() swojego pliku TypeScript. – jgillich
to praca nie jest rozwiązaniem. Co jeśli chcę przetworzyć argumenty linii poleceń w TypeScript? –
Shebangs zakłada, że interpreter docelowy używa znaku # # jako swojego znaku komentarza, tak że sam shebang jest ignorowany. Masz dodatkowe komplikacje, że nie ma interpretera TypeScript; najpierw skompiluj go do JavaScript, a potem zinterpretuj wynik. – chepner