web-dev-qa-db-ja.com

es6とes2017のtsconfig.jsonの「lib」プロパティの違いは?

_tsconfig.json_ファイル内にあるlibで、compilerOptionsプロパティの可能な値が何を意味するかを調査してきました。 TypeScript GitHub ページで、これらの値に対応する関連する_d.ts_ファイルを見つけました。明らかに、_ES2017_を使用すると、次のES機能が含まれます。

_/// <reference path="lib.es2016.d.ts" />
/// <reference path="lib.es2017.object.d.ts" />
/// <reference path="lib.es2017.sharedmemory.d.ts" />
/// <reference path="lib.es2017.string.d.ts" />
/// <reference path="lib.es2015.d.ts" />
/// <reference path="lib.es2016.array.include.d.ts" />
/// <reference path="lib.es2015.core.d.ts" />
/// <reference path="lib.es2015.collection.d.ts" />
/// <reference path="lib.es2015.generator.d.ts" />
/// <reference path="lib.es2015.iterable.d.ts" />
/// <reference path="lib.es2015.promise.d.ts" />
/// <reference path="lib.es2015.proxy.d.ts" />
/// <reference path="lib.es2015.reflect.d.ts" />
/// <reference path="lib.es2015.symbol.d.ts" />
/// <reference path="lib.es2015.symbol.wellknown.d.ts" />
/// <reference path="lib.es5.d.ts" />
_

しかし、どうやらES6は含まれておらず、何も参照しない独自の file があります。私の質問は、誰かが知っているなら、_es2017_を使用することによって(タイピングの観点から)すべての_es6_機能をカバーすると仮定しても安全ですか、それともlibオプションに個別に含める必要がありますか?

たとえば、次のようになります。

_{
  ...
  "compilerOptions": {
    ...
    "lib": ["es2017", "dom"]
  },
  ...
  }
}
_

またはこれ:

_{
  ...
  "compilerOptions": {
    ...
    "lib": ["es2017", "es6", "dom"]
  },
  ...
  }
}
_
11
Vigidis

TypeScript GitHublibフォルダーを掘り下げて比較したところ、libcompilerOptionsプロパティでes6を使用すると、これらの参照にあるコードに対応することがわかりました。

/// <reference path="lib.es2015.core.d.ts" />
/// <reference path="lib.es2015.collection.d.ts" />
/// <reference path="lib.es2015.generator.d.ts" />
/// <reference path="lib.es2015.iterable.d.ts" />
/// <reference path="lib.es2015.promise.d.ts" />
/// <reference path="lib.es2015.proxy.d.ts" />
/// <reference path="lib.es2015.reflect.d.ts" />
/// <reference path="lib.es2015.symbol.d.ts" />
/// <reference path="lib.es2015.symbol.wellknown.d.ts" />
/// <reference path="lib.es5.d.ts" />
/// <reference path="lib.dom.d.ts" />
/// <reference path="lib.scripthost.d.ts.d.ts" />
/// <reference path="lib.dom.iterable.d.ts" />

したがって、私の質問に答えるために、es6のすべての内容をes2017で正しくカバーするには、tsconfig.jsonのそのセクションは次のようになります。

{
  ...
  "compilerOptions": {
    ...
    "lib": ["es2017", "dom", "dom.iterable", "scripthost"]
  },
  ...
  }
}
11
Vigidis