Разница в свойстве «lib» в tsconfig.json между es6 и es2017?

Я исследовал, что означают возможные значения свойства lib в compilerOptions, найденном в файле tsconfig.json. Я нашел на странице 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 не включен и имеет собственный файл это ни на что не ссылается. Мой вопрос: если кто-нибудь знает, безопасно ли предположить, что, используя es2017, я покрываю всю функциональность es6 (с точки зрения типизации) или это должно быть включено отдельно в параметр lib?

Например, вот так:

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

Или это:

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

person Vigidis    schedule 09.05.2017    source источник
comment
@Bergi, ну, не совсем в соответствии с машинописным текстом. Он включает в себя все материалы ES2015 и дополнительные вещи. Смотрите мой ответ ниже.   -  person Vigidis    schedule 10.05.2017


Ответы (1)


После некоторого копания и сравнения в папке lib на Typescript GitHub я обнаружил, что , использование es6 в свойстве lib в compilerOptions соответствует коду, найденному в этих ссылках:

/// <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"]
  },
  ...
  }
}
person Vigidis    schedule 10.05.2017