ค้นหาเว็บไซต์

angular - วิธีการใช้ collections.js ใน typescript?


ฉันต้องการใช้ collections.js ในโปรเจกต์ Angular2 ของฉันที่เขียนด้วย Typescript ฉันต้องการเริ่มต้นด้วย multimap ไม่มีแพ็กเกจ @types/collections และไม่มี collections.js ใน typings

เมื่อฉันเขียน

const MultiMap = require('collections/multi-map')

ฉันได้รับ 'NoProviderError for PlatformRef' ใน Angular2

คำตอบ #1

ข้อผิดพลาด NoProviderError เกิดจากความจริงที่ว่าห้องสมุด collection.js เปลี่ยนวิธีการทำงานของ primitive พื้นฐาน โดยเฉพาะ Array

ภายใน, zone.js (ซึ่งเป็นส่วนหนึ่งของ Angular) เรียกใช้ Array.from พร้อมอินสแตนซ์ของ MapIterator เป็นอาร์กิวเมนต์ ในไฟล์ collections/shim-array.js, ไลบรารีนี้จะเขียนทับ Array.from ด้วยการนำไปใช้งานที่ไม่สามารถทำงานกับ MapIterator ได้ ในภาพหน้าจอคุณสามารถเห็นได้ว่ามันส่งกลับอาร์เรย์ว่าง ในขณะที่การนำไปใช้งานแบบเนทีฟส่งกลับอาร์เรย์ที่มี 13 องค์ประกอบ

ข้อสรุปก็คือ น่าเสียดายที่คุณไม่สามารถใช้ไลบรารี Collections.js กับ Angular ได้

บทความที่เกี่ยวข้อง