আপডেট : টাইপসক্রিপ্ট ২.৩ এর সাহায্যে আপনি এখন আপনার সিএসকিফিগটিতে যুক্ত করতে পারেন "downlevelIteration": true
এবং এটি ES5 টার্গেট করার সময় কাজ করবে।
এর খারাপ দিকটি downlevelIteration
হ'ল টিএসকে ট্রান্সপ্লার করার সময় বেশ কিছুটা বয়লারপ্লেট ইনজেকশন করতে হবে। প্রশ্ন থেকে একক লাইন যোগ করা বয়লারপ্লেটের 21 লাইন দিয়ে স্থানান্তর করে: (টাইপস্ক্রিপ্ট ২.6.১ হিসাবে)
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);
এই বয়লারপ্লেটটি প্রতি ফাইলগুলিতে একবার ইনজেকশন দেওয়া হবে যা ডাউনলিল পুনরাবৃত্তি ব্যবহার করে এবং এই বয়লারপ্লেটটি "importHelpers"
tsconfig এর মাধ্যমে বিকল্পটি ব্যবহার করে হ্রাস করা যেতে পারে । ( ডাউনলএল পুনরাবৃত্তিতে এই ব্লগপোস্টটি দেখুন এবং importHelpers
)
বিকল্পভাবে, যদি ইএস 5 সমর্থনটি আপনার পক্ষে গুরুত্বপূর্ণ না হয় তবে আপনি সর্বদা প্রথম স্থানে "এস 6" লক্ষ্য করতে পারেন, সেক্ষেত্রে মূল কোডটি "ডাউনলিলিগ্রেশন" পতাকাটির প্রয়োজন ছাড়াই কাজ করে।
আসল উত্তর:
এটি প্রকারভেদ ES6 প্রতিস্থাপনের quirk বলে মনে হয়। ...
অপারেটর কিছু কোনো ইটারেটরে সম্পত্তি, (দ্বারা অ্যাক্সেস করেছে যে কাজ করা উচিত obj[Symbol.iterator]
) এবং সেট যে সম্পত্তি আছে।
এই সমস্যা এড়ানোর জন্য, আপনি ব্যবহার করতে পারেন Array.from
প্রথম একটি অ্যারের সেট রূপান্তর করতে: ...Array.from(new Set([1, 2, 3, 1, 1]))
।