У меня есть проект TypeScript, который скомпилирован с "target": "es5"
. Я использую core-js's Set
, поэтому у меня есть core-js и @ types/core-js, установленные в моем проекте. Однако, поскольку core-js d.ts включает глобальное объявление Set
и Map
(и другие функции ES6), компилятор TypeScript позволяет мне использовать их, что, очевидно, не будет работать в старом браузере.core-js и Typcript с целевым ES5 позволяют использовать неподдерживаемые функции ES6
Я не могу исключить core.d.ts из сборки, потому что я, очевидно, нуждаюсь в нем для интерфейсов.
Есть ли способ для компилятора запретить мне использовать функции ES6 и по-прежнему использовать core-js и соответствующие им определения типов?
Какие интерфейсы вам нужно от него? Если вы не хотите использовать функции es6, вам не нужны типы, соответствующие этим функциям. –
Я хочу использовать 'Set'. Но я не хочу использовать core-js как глобальную замену, а скорее как библиотеку. Поэтому у меня есть 'import * в качестве CoreSet из« core-js/library/fn/set »;' в файле, который ему нужен. Поэтому я могу сделать «новый CoreSet()'. Но проблема в том, что я также могу сделать 'new Set ()', и он отлично компилируется, а затем выходит из строя в браузере. –
Dina
Я вижу. Поскольку core-js является полифилом, его объявления предназначены для изменения глобальной области. Я бы порекомендовал вам найти или создать собственное объявление интерфейса, это довольно просто и, безусловно, удалить пакет @ types/core-js, поскольку он приведет к хаосу в вашем пространстве имен. –