Güncelleme : Typescript 2.3 ile artık "downlevelIteration": truetsconfig'inize ekleyebilirsiniz ve bu ES5 hedeflenirken çalışacaktır.
Bunun dezavantajı, downlevelIterationTS'nin aktarım sırasında epeyce standart metin enjekte etmesi gerekecek olmasıdır. 21 satırlık standart şablon eklenmiş soru yığınlarından tek satır: (Typecript 2.6.1 itibariyle)
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
var uniques = __spread(new Set([1, 2, 3, 1, 1]));
console.log(uniques);
Bu standart şablon, alt düzey yinelemeyi kullanan dosya başına bir kez enjekte edilecektir ve bu standart "importHelpers"şablon tsconfig aracılığıyla seçenek kullanılarak azaltılabilir . ( Alt düzey yinelemeyle ilgili bu blog yayınına bakın ve importHelpers)
Alternatif olarak, ES5 desteği sizin için önemli değilse, her zaman ilk etapta "es6" yı hedefleyebilirsiniz, bu durumda orijinal kod "downlevelIteration" bayrağına ihtiyaç duymadan çalışır.
Orijinal cevap:
Bu bir typcript ES6 transpilation tuhaflığı gibi görünüyor. ...Operatör bir yineleyici özelliği, (Eriştiği sahiptir şey üzerinde çalışması gerekir obj[Symbol.iterator]) ve Setleri o özelliği vardır.
Bu çevrede çalışmaları için kullanabilirsiniz Array.fromilk bir diziye dönüştürmek ayarlayın: ...Array.from(new Set([1, 2, 3, 1, 1])).