tsconfigオプション「lib」は何をしますか?


129

tsconfig.jsonに次の行がある既存のプロジェクトがあります。

lib:["2016", "DOM"]

これの目的は何ですか?

私が見つけることができる唯一の情報はこれです:

コンパイルに含めるライブラリファイルを指定します。TypeScriptバージョン2.0以降が必要です。

どういう意味ですか?


回答:


75

これは新しいtypescript 2機能であるため、まだドキュメントがありませんが、Typescript 2.0の新機能で確認できます。

--libを使用すると、プロジェクトに含めることを選択できる組み込みAPI宣言グループのリストを指定できます。たとえば、ランタイムがMap、Set、Promiseのサポートを期待している場合(たとえば、今日のほとんどの常緑樹ブラウザー)、-lib es2015.collection、es2015.promiseを含めるだけです。同様に、プロジェクトに含めたくない宣言を除外できます。たとえば、--lib es5、es6を使用してノードプロジェクトで作業している場合はDOMです。

API groupsサポートされているのリストとそのリンクの非常に短い例もあります。


25
"lib":["es5"]を指定すると、コンパイラーの不平を言うときにes5タイプを使用できるということですtsか、それとも、何らかの種類のポリフィルが提供されtscますか?
— Max Koretskyi 2017年

9
さまざまなライブラリは次の場所にあります。github.com / Microsoft / TypeScript / tree / master / libこれらはコンパイラが使用する定義ファイルです
— Nitzan Tomer

5
わかりました。おかげで、これは基本的に、"lib": ["es5"]「dom」を指定して指定しないとtsc、DOM固有のメソッドの使用について文句を言うことになるということを意味しますよね?
— Max Koretskyi 2017年

12
「es2015.promise」などを含めても、コンパイル済みコードにポリフィルが含まれていないことに注意してください。代わりに、コードがpromiseを使用していることをコンパイラーに通知するだけで問題ありません。あなたは約束のpolyfillsを追加する必要がある場合は、いずれかのコード内でポリフィルをインポートまたは(WebPACKの中または次のローダー)後工程として機械(バベル・プリセット・ENV)に対応するバベルの使用を検討
— Dmitriiソリン

20
これらのグループはコンパイラに約束をします、「これらのAPIについて文句を言わないでください。ブラウザがそれらをサポートすることを約束します。」たとえば、ポリフィルを追加es6して含めない場合、古いブラウザで問題が発生します。
— スティーブクレイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.