0

次の構造のフラスコ プロジェクトがあります。

├─ app.py
├─ project
|  ├─ __init__.py
|  └─ static
|     └─ typescript
|        └─ app.ts
└─ typings
   ├─ globals
   |  └─ ... # multiple imported ts libraries
   └─ index.d.ts

Flask Assetsという webpacker 統合を使用しています。私はそのようにコンパイルを設定しました(で__init__.py

ts = get_filter('typescript')
ts.load_paths = [
    #os.path.join(config.APP_ROOT, '..', 'typings'), # doesn't do anything :/
    os.path.join(app.static_folder, 'typescript')
]

assets.register('javascript', Bundle(
    'typescript/app.ts', 
    filters = (ts, 'jsmin'),
    output = 'js/app-%(version)s.js'
))

私のapp.tsは、多かれ少なかれ、

class SomeClass {
    ... various class methods, using things like jQuery and CryptoJS
}

インポートはありません-必要かどうかはよくわかりません。

私が得ている特定のエラーは

Cannot find name 'JQuery'.
../../../../../var/folders/5t/4x0gmsdx0dbbgv_fr3cv3x6m0000gn/T/tmphFTSQo.ts(7,17): error TS2503: Cannot find namespace 'CryptoJS'.
../../../../../var/folders/5t/4x0gmsdx0dbbgv_fr3cv3x6m0000gn/T/tmphFTSQo.ts(10,27): error TS2304: Cannot find name '$'.
... a bunch more about other symbols
4

1 に答える 1

0

なんとなく解けた...

glob_string = os.path.join(config.APP_ROOT, '..', 'typings', '*', '*', '*.d.ts')

assets.register('javascript', Bundle(
    glob.glob(glob_string),
    'typescript/app.ts',
    filters = ('typescript', 'jsmin'),
    output = 'js/app-%(version)s.js'
))

基本的に、すべての定義ファイルをバンドルに「手動で」追加するだけです (glob を使用)。typescript フィルターはコンパイル前にを一時ファイル ( ) にコピーし、 のパスは相対index.d.tsであるため、typings dir のルートに を追加するだけでは十分ではありません。.ts/tmpindex.d.ts

また、何もしないことに注意する必要がありますts.load_paths...

于 2016-09-20T22:04:37.500 に答える