2016-06-20 8 views
5

角度1.5のプロジェクトをTypeScriptに変換して、angularTranslateをインポートする際に問題が発生しました。TypeScriptコンパイラでインポートされた角度変換モジュールが省略されました

私はこのようなangularangular-translateの両方をインポートしよう:

import * as angular from "angular"; 
import * as angularTranslate from "angular-translate"; 

console.log(angular, angularTranslate); 

私はDefinitelyTyped/angular-translate.d.tsからインストールタイピングを使用しています。

私は活字体1.8(module: "commonjs")でコンパイルすると、それはこのJavaScriptを発する:

"use strict"; 
var angular = require("angular"); 
console.log(angular, angularTranslate); 

あなたはそれを参照していますにもかかわらずangularTranslate輸入を減少している、と同様に使用angular輸入が保存されて見ることができるように。これにより、実行時エラーReferenceError: angularTranslate is not definedが発生します。これはBabelとうまく動作します。 angularTranslateはどのようにインポートする必要がありますか?

編集:

また、これは何も発しなかっ:

import angularTranslate = require("angular-translate"); 

しかし、これは予想される出力発する:

let angularTranslate = require("angular-translate"); 

はにそれが不可能angular-translate moduleに何か問題はありますTypeScriptのimportで使用しますか?

+0

あなたは '輸入 "アンギュラ翻訳" プレーンを試してみました;'(([こちら]提案しますhttp://stackoverflow.com/a/36895388/2764255))? –

+1

私は問題は "角翻訳"モジュールが名前空間をエクスポートすることだと思います。 –

+0

私は副作用としてインポートを試していません。これは、インポートが取り除かれないようにするために働くかもしれませんが、インポートされたモジュールを参照できません。 @AlekseyL。 – Aaron

答えて

1

問題は、「角度変換」モジュールが名前空間をエクスポートすることです。一時的な解決策として、古いバージョンのangular-translate.d.tsまたはforkを参照し、手動で修正することができます。

1

angular 1.5はJSやUMDのモジュール構造をサポートしていません(独自のモジュールシステムを持っています)。したがって、「角度」から何かをインポートした場合、環境モジュール宣言からの型付き型のファイルから型をインポートするだけで、typescript transpilerはCommonJSのインポート定義を結果JSに出す必要がないことを認識することができます(宣言のみがインポートされます)。しかし、CommonJSの必要な構文(またはES6 import "module")でインポートを直接定義する場合は、モジュールローダまたはバンドラが必要なモジュールをロードするときにangleスクリプトを実行する副作用インポートを作成します。

+1

返事ありがとうございますが、これは当てはまりません。 ES6モジュールでは角度1.5を使用できます。これはどのように使用するのですか?ほとんどのサードパーティのAngularライブラリは角依存関係の名前をエクスポートするので、名前をインポートするだけです。実際には、「角度変換」さえもこのように動作し、BabelではTypeScriptでは使用できません。私はBabelがいくつかの魔法のモジュール互換レイヤーを持っていることを知っていますが、TypeScriptでも、他のすべての第三者角度ライブラリは 'angle-translate'を除いてこのように動作します。どうして? – Aaron

+0

こんにちは、私はあなたに同意しますが、理解できません。なぜなら、タイプ(インターフェイス)だけをインポートすることをトランスバーターが認識すると、TypeScriptはいくつかのインポートを出さないのです。状況は異なります。解決されたモジュール(あなたのケースの環境モジュールで)が一定の値、関数(コンストラクタのもの)をエクスポートすると、そのようなインポートをスキップする機会がないことになります。私は角柱の問題がタイプエイリアスの輸出にあると思うが、もちろん私は確かではない。したがって、副作用のインポートまたはホット修正の角度翻訳定義ファイルを自分で使用してください.... –

0

//インポート角度変換

import angularTranslate from 'angular-translate'; 

は、引用符を使用しません:

var app = angular.module('myApp', [angularTranslate]); 
関連する問題