前提
テンプレートはこんな感じ1
{% load compress %}
{% compress js %}
<script type="text/typescript">
class Greeter {
constructor(public greeting: string) { }
greet() {
return "<h1>" + this.greeting + "</h1>";
}
};
var greeter = new Greeter("Hello, world!");
var str = greeter.greet();
document.body.innerHTML = str;
</script>
{% endcompress %}
ダメだったやりかた
settings.py
COMPRESS_PRECOMPILED = ('text/typescript', 'tsc --out {outfile} {infile}')
エラーが出る
error TS6053: File '/tmp/tmpxxt3rmzl.ts' not found.
理由
tscは拡張子に.ts
または.d.ts
しか使用できない。2
解決方法
tscをラップしたスクリプトを作ってそれを指定する。
settings.py
COMPRESS_PRECOMPILED = ('text/typescript', '/path/to/my-tsc {infile} {outfile}')
my-tsc
#!/bin/sh
cp $1 $1.ts
tsc $1 --out $2
rm $1.ts