2017-07-27 11 views
0

app.config.tsクラスをtypescriptにインポートして使用する方法です。 Javascriptファイル(config.js)に同じAppConfigクラスをインポートし、メソッドgetConfigにアクセスするにはどうすればよいですか?javascriptでtypescriptクラスをインポートするには?

service.ts

import { AppConfig } from '../app.config'; 
constructor(private http: Http, private config: AppConfig) { 
    this.dataURL = this.config.getConfig('restApi') + '/api/getdata/' 
    console.log(this.dataURL) 
} 
+0

あなたの現在のバンドラー(webpack?)と特定の設定に関する情報を共有できますか? –

+3

TypescriptはJavascriptで直接実行できないため、まったくありません。 Typescriptを実行可能なJavascriptに変換するツールが必要です。答えはそこにあります。 – deceze

答えて

0

私はあなたが求めている内容を正確に把握していないので、私は部分にに分割しました:あなたはtypescriptファイルをインポートしようとしている場合

JavaScriptファイルに

あなたのconfig.jsの名前をconfig.tsに変更して、それをタイプスクリプトファイルのように扱うのが最善の解決策です。

つまりあなたはこの持っている場合:

export class AppConfig { 
    foo: string; 
    bar: number; 
} 

そして、あなたのconfig.jsの中に、あなたは、この持っている:

export const Config = { 
    foo: 'Hello World', 
    bar: 42 
} 

を私はあなたがに似て何かをしたいと仮定します。

import { AppConfig } from './app.config' 

export const Config: AppConfig = { 
    foo: 'Hello World', 
    bar: 42 
} 

をconfig.jsの名前をconfig.tsに変更します。とにかくタイプチェック用のタイスクリプトファイルでなければなりません(ただし、allowJsルールをtsconfig.jsonに入れない限り、.tsファイルを.jsファイルにインポートするのは賢明ではないと思います)。

あなたのURLから動的にJavascriptのファイル(または何か)をインポートしようとしている場合はJavaScriptファイルを動的に実際になく、少なくともその技術的な理由のカップルのためのブラウザでは動作しませんインポート

ES6の「インポート」(またはノードの「要求」)がブラウザの標準にないためです。

代わりに、設定をJSONファイルに変換し、JavaScriptのネイティブJSON.parseを使用して解析することをお勧めします。 I.E:

http.get(this.dataUrl).toPromise().then(response => { 
    let config = null; 
    try { 
    config = JSON.parse(response.data); 
    } catch (e) { 
    console.error("Couldn't parse response!"); 
    } 
    this.config = new AppConfig(config); // See note 
} 

またはこれらの行に沿ったもの。

注:私はあなたのAppConfigクラスのコピーとデフォルトコンストラクタの両方を持っていると仮定します。あなたがしなければ、それを作成したり、それに類似した構文解析関数を作成したりすることができます。

0

キーワードは、thisというキーワードを削除すると、設定はコンストラクタに挿入されており、クラスには存在しません。 so:

import { AppConfig } from '../app.config'; 
constructor(private http: Http, private config: AppConfig) { 
    this.dataURL = config.getConfig('restApi') + '/api/getdata/' 
    console.log(this.dataURL) 
} 
関連する問題