2016-03-21 7 views
0

私が使用する外部ライブラリに対応するタイピング(TypeScriptファイルでのインストールと参照)がないと、TypeScriptアプリケーションのコンパイルが失敗することがあります。現時点では、コンパイルはそれらなしで成功しています。ここでd.tsファイルなしでコンパイルエラーなし

は私tsconfig.jsonの内容である:ここで

{ 
    "compilerOptions": { 
    "target": "ES5", 
    "module": "system", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "noEmitOnError": false, 
    "declaration": true 
    } 
} 

は、私は、エラーをスローしたいコードは(toastr変数が定義されており、実行時にのみ提供されていない)である。

import {Component} from 'angular2/core'; 

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div>Hello world</div> 
    ` 
}) 
export class AppComponent { 
    constructor() { 
    toastr.info('I am here for few seconds'); 
    } 
} 

ありがとう!

+2

私はこれを行う簡単な方法はないと思います。 TypescriptはJavaScriptのスーパーセットとして書かれているので、有効なJavaScriptはすべて有効です。Typescript。有効なJavaScriptは型なしにすることができるので、有効なTypescriptは型なしにすることができます。 Typescriptコンパイラにはこれが組み込まれている可能性がありますが、そのような機能は認識していません。あなたは機能要求を試すことができますhttps://github.com/Microsoft/TypeScript/issues – AndyJ

+1

toastrはツリーのどこかのファイルで参照されていますか?これは私のためにコンパイルされないので、何かが異なっていなければなりません。 – Fenton

+0

あなたはtoastrタイピングを使いたくない理由はありますか? – rgvassar

答えて

2

デフォルトでは、TypeScriptはエラーがあってもJavaScriptを出力します。 This is a feature. See Why TypeScript

これはあなたのtsconfigにあると言っています"noEmitOnError": false,。それをtrueに変更すると、エラーがあれば放出されません。これはコンパイラが単一のファイルにエミットを与えるために全プログラム解析を行う必要があるため、コンパイルのパフォーマンスが低下する可能性があることに注意してください。

+0

あなたの答えをありがとう!私はAngular2のビルドがこれを可能にするため、この質問をしました。コンパイルに失敗し、typescript設定ファイル内でこれを設定する方法が不思議でした... –

+0

https://github.com/angular/angular/blob/master/tools/broccoli/treesを参照してください。 /browser_tree.ts#L169 –

+0

私はそれが同じコンパイラを使用しないためだと思います;-) –

2

コンパイラをシャットダウンする簡単な方法の1つは、のtoastrを任意の変数として宣言することです。

declare toastr: any; 
+0

はい私はこれを知っています;-)実際に私の質問は:私がこれを忘れた場合、どのようにコンパイルエラーを見るか... –

関連する問題