問題タブ [tsc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
typescript - ファイルで「インポート」を使用すると、tsc --out が奇妙な動作をする
app.ts
、および「angular2.d.ts」(angular2 の型定義を含む)という 2 つの typescript ファイルがあります。
私のtsconfig.json
ファイルは次のようになります:
期待される結果 -public/all.js
コンパイルされた ts ファイルが含まれます。
実際の結果 -src/app.js
コンパイルされた ts ファイルを含むファイルが作成されます。
public/all.js
も作成されますが、次の行のみが含まれます:
//# sourceMappingURL=all.js.map
(つまり、ソース マッピングのみで、実際のコードはありません)
さらに調査すると、問題のある行は次のとおり
import {Component, View, bootstrap} from 'angular2/angular2';
ですsrc/app.ts
。その行を削除するとすぐに、すべてが正しくコンパイルされます。元に戻すとすぐに、前述の問題が発生します。
私は何を間違っていますか?
typescript - VisualStudio から typescript を発行するときの 8K コマンド ラインの制限
Visual Studio に、IDE から適切にコンパイルして実行できる typescript プロジェクトがあります。
Azure で公開しようとすると、VS は tsc を起動し、すべてのファイルを 1 つのコマンド ラインでコンパイルします。約 130 個の .ts ファイルがあります。平均ファイル長は約 85 (フル パス) で、コマンド ラインが 8K を超え、切り詰められているため、tsc は不完全なファイル セットを受け取り、エラーが発生します。
問題が 8K にあることを確認するために、Subst ドライブを作成し、すべてのパスを短縮しました。このテスト中、Tsc のコンパイルは問題ありませんでした。
誰でも問題を回避するのを手伝ってもらえますか?
typescript - アンビエント d.ts モジュールを使用した Typescript ES6 モジュール構文
では、50 個のファイル モジュールがあり、それぞれに次のものが含まれているとします。
export class <SomeClassName> { /* content */ }
次に、ルート ファイルを作成して、すべてのファイルを再エクスポートして使用を簡素化します。したがって、次のようになります。
次に、TSC を介して実行し、「es5」を対象とする「共通」モジュールを記述子出力で実行します。
ここまでは順調ですね。モジュールのエントリポイントとして出力されるpackage.json
名前my-module
のターゲットを持っています。index.js
そこで、このモジュールを別の typescript プロジェクトで使用することにしました。
だから私はそれのためにnpmインストールを行い(ふりをしましょう)npm install my-module
、それがすべて取り込まれるので、生成されたd.tsファイルがあり、実際のcommonjsモジュールがあるので、すべてを使用できます。すべてがうまくいっているようです。
次に、問題が発生します。次に、モジュールを利用することにしました。
import {SomeClass1} from 'my-module'
TS の世界のように爆破して、何が関係しているか分からずmy-module
、戻って出力された index.js を見ると、アンビエント モジュールが含まれていません。
ここに問題があります。一般的なモジュールは通常、モジュール名を含める際の参照ポイントとして package.json を使用しますが、TS は d.ts ファイルを使用します。それで、私は大丈夫だと思ったので、再エクスポートをindex.ts
モジュールにラップする必要があるので、試してみます:
export module "my-module" { /* all other re-exports */ }
しかし、アンビエント モジュールには文字列モジュール名しか使用できず、d.ts ファイル内にしか配置できないことがわかりましたが、私の d.ts ファイルは既存のコードベースから生成されます。
ここに私のジレンマがあります。手動でdeclare module "my-module
d.ts にラッパーを追加することはできますが、あまり自動化されていません。または、ES6 構文を使用したブログ投稿が好きで、ファイルを相対的に参照すると、多くのファイルが生成されます。import {blah} from "../node_modules/my-module/dist/index"
、うまくいけば、私たち全員が同意できることは少しばかげています.
したがって、自動化された世界で機能する他のアプローチを見つけることができません.ES6構文を使用する場合、このテーマに関するすべてのブログ投稿とドキュメントはすべて、全体がコンパイルされ共有されたときからのインポートではなく、相対ファイルインポートを使用します. d.ts ファイル経由。
再エクスポートをテキストのモジュール名でラップする方法はありますか? または、少なくとも index.d.ts をアンビエント モジュールに含めるように指示しますか? (プロジェクト内のすべてのファイルに対して d.ts ファイルを出力することを覚えておいてください。ただし、すべてを再エクスポートするため、index.d.ts を介してモジュールをインポートすることのみを考慮します)。
typescript - tsc 1.5 にはまだ --module フラグが必要ですか?
Typescript 1.5tsconfig.json
では、コンパイラ オプションなどを指定できる構成ファイルのサポートが追加されました。
1.5 を発表したブログ投稿からのヒントを次に示します。
コンパイラは、プロジェクト内のファイルと使用するコンパイラ設定を指定できる新しいファイルである 'tsconfig.json' をサポートするようになりました。
--module
これにより、フラグをコンパイラに追加する必要はもうないと思いました。しかし、クラスをエクスポートする単純なファイルをコンパイルしようとすると、次のようになります。
実行中tsc
は--module commonjs
すべて正常に動作します。
ts ファイルは次のとおりです。
そして、ここにありますtsconfig.json
:
私の Typescript バージョンは 1.5.3で、同じフォルダーに住んでいますtsctest.ts
。tsconfig.json
node.js - OS X でターミナル経由で tsc をインストールできない
tsc をインストールしようとしていますが、実行すると大量のエラーが発生します。
ノードとnpmを少なくとも3回再インストールしようとしましたが、役に立ちませんでした。npm のフラグを verbose に設定したところ、次のようになりました。
私は途方に暮れています。私はググってたくさんのページに行きましたが、これは他の人にとってはうまくいくようですが、別のエラーがあるだけです。問題が何であるかについて何か考えはありますか?
ノードとnpmがインストールされた現在のbash_profileは次のとおりです。
他に何かご不明な点がございましたら、お気軽にお問い合わせください。よろしくお願いいたします。
typescript - Angular2 TypeScript アプリケーションを単一のファイルにコンパイルする方法は?
アプリケーションをコンパイルすると、tsc my_app.ts --target system
インポートされたモジュールごとに SystemJS でラップされたファイルが生成されることに気付きました。
この質問を「TypeScript を名前付き SystemJS モジュールにコンパイルする方法」にすることを考えましたが、私の目標は、Angular2 アプリを SystemJS かどうかに関係なく単一のファイルにコンパイルすることです。