การพิมพ์ TypeScript ในแพ็คเกจองค์กร npm @types


139

ฉันสังเกตเห็นว่ามี npm organization @typesซึ่งมีแพ็คเกจการพิมพ์ แต่ไม่พบเอกสารใด ๆ วิธีการใช้เหล่านี้มีความหมายอย่างไร?

มันมีความหมายที่จะใช้กับtypingsเครื่องมือ? ถ้าเป็นเช่นนั้นจะติดตั้งอย่างไร? ตัวอย่างเช่นมี@types/openlayersแพ็กเกจ แต่typings search npm:openlayersไม่ส่งคืนอะไรเลย

หมายถึงใช้แยกจากเครื่องมือพิมพ์หรือไม่? เช่นติดตั้งโดยตรงกับnpm?


12
ขอบคุณสำหรับคำถามนี้
Léon Pelletier

คำตอบ:


110

ในฐานะของ typescript 2.0 typingsจะต้องไม่ องค์กร npm เป็นหน่วยงานในการจัดตั้งทีมนักพัฒนา ฉันเชื่อว่า Microsoft ตั้งค่าองค์กร @types ใน npm และเพิ่มทีมนักพัฒนา TypeScript ให้กับองค์กร แพคเกจภายใต้องค์กร @types มีการเผยแพร่โดยอัตโนมัติจาก DefinitelyTyped ใช้เครื่องมือชนิดเผยแพร่ตามเอกสาร

นอกจากนี้ยังมีอีกวิธีหนึ่งในการเพิ่มtypesแพ็คเกจของคุณ:

ใน package.json ของคุณ

หากแพ็กเกจของคุณมี.jsไฟล์หลักคุณจะต้องระบุไฟล์ประกาศหลักในpackage.jsonไฟล์ของคุณด้วย ตั้งค่าtypesคุณสมบัติให้ชี้ไปที่ไฟล์การประกาศบันเดิลของคุณ ตัวอย่างเช่น:

{
    "name": "awesome",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/main.js",
    "types": "./lib/main.d.ts"
}

โปรดทราบว่า"typings"ฟิลด์นี้มีความหมายเหมือนกัน"types"และสามารถใช้ได้เช่นกัน

โปรดทราบว่าหากไฟล์ประกาศหลักของคุณถูกตั้งชื่อindex.d.tsและอยู่ที่รูทของแพ็กเกจ (ถัดจากindex.js) คุณไม่จำเป็นต้องทำเครื่องหมาย"types"คุณสมบัติแม้ว่าจะแนะนำให้ทำเช่นนั้นก็ตาม

เกี่ยวกับประเภทการค้นหา

โดยส่วนใหญ่แล้วประเภทการประกาศแพ็กเกจควรมีชื่อเดียวกันกับชื่อแพ็กเกจบน npm เสมอ แต่ขึ้นต้นด้วย @ types / แต่ถ้าคุณต้องการคุณสามารถตรวจสอบhttps://aka.ms/typesเพื่อค้นหาแพ็กเกจ สำหรับห้องสมุดที่คุณชื่นชอบ

จาก - http://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html

แต่เมื่อฉันทำnpm search @types/openlayersฉันไม่ได้รับผลใด ๆ แต่การค้นหาจากเว็บอินเทอร์เฟซกลับทำให้ฉันได้ผลลัพธ์ ดังนั้นฉันเดาnpm searchว่าไม่ได้ค้นหาในองค์กร


ตอบโจทย์มาก! การแก้ไขเล็กน้อยจะดี แต่การอธิบายสถานะปัจจุบันทำได้ดีกว่ามาก
Ronald Zarīts

เนื่องจากคุณระบุไฟล์เดียวในของคุณpackage.jsonภายใต้typesคุณสมบัติที่ผมสังเกตเห็นคุณกำลังพูดถึงไฟล์ประกาศรวม อะไรคือวิธีที่ง่ายที่สุดในการบรรลุสิ่งนี้ในระบบสร้างอัตโนมัติเช่นอึก?
Nicky

ฉันต้องเพิ่ม"main"ฟิลด์หรือไม่ถ้า main ชื่อ index.js
Knu

2
ขอบคุณมากสำหรับสิ่งนี้"โปรดทราบว่า"typings"ฟิลด์นี้มีความหมายเหมือนกัน"types"และสามารถใช้ได้เช่นกัน"
Serhii Popov

42

การประกาศในบล็อก TypeScript ตอบโจทย์นี้: อนาคตของไฟล์การประกาศ

สรุป:

@typesองค์กร NPM npmเป็นคำจำกัดความสำหรับการได้รับชนิดที่มี การใช้คำจำกัดความประเภทเหล่านี้เป็นคุณลักษณะที่มาใน TypeScript 2.0

สิ่งนี้จะแทนที่โครงการ / เครื่องมือปัจจุบันเช่นการพิมพ์และtsdแม้ว่าสิ่งเหล่านี้จะยังคงได้รับการสนับสนุนในบางครั้ง


1
เฮ้รอนฉันพยายามตั้งค่าเหล่านี้ แต่ดูเหมือนว่า VSCode จะไม่รู้ว่าฉันติดตั้งแล้ว หลังจากใช้บางอย่างเช่นcore-jsw / npm i @types/core-js --saveฉันเห็นมันอยู่ในโฟลเดอร์ แต่โครงการยังคงแสดงข้อผิดพลาดสำหรับสิ่งต่างๆ มีอย่างอื่นที่ฉันควรทำอีกไหม? ฉันต้องแจ้งให้ tsconfig ทราบ @types หรืออะไร? เช่นเดียวกับฌอนกล่าวว่ายังไม่มีเอกสารใด ๆ สำหรับประเภท :(
Mark Pieszak - Trilon.io

@MarkPieszak คุณต้องแน่ใจว่า VSCode ใช้ TS2.0 ดูวิธีการติดตั้ง TypeScript ในเครื่องและใช้ใน VSCode ได้ที่นี่: github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino

ใช่นั่นคือ @ nino.porcino ขอบคุณ :) tsdkจำเป็นต้องชี้ไปที่การติดตั้ง 2.0beta ของ TS
Mark Pieszak - Trilon.io

อย่างน้อยสำหรับโครงการของทีมบางโครงการที่เรากำลังอัปเดต (และในโครงการ GH อื่น ๆ ที่เราเห็น) ควรอัปเดตtsconfig.jsonด้วย"types"คุณสมบัติอาร์เรย์ที่แสดงชื่อโมดูลเหล่านั้นเช่น"types": ["core-js"]
superjos

7

นี่จะเป็นคุณสมบัติที่เปิดตัวใน typescript 2.0 สิ่งนี้ให้การสนับสนุนประเภทสำหรับ UMD Modules / Libraries และคำจำกัดความตามลำดับ

โปรดดู ( การสนับสนุนในตัวสำหรับคำจำกัดความของโมดูล UMD ) เพื่อทำความเข้าใจปัญหาที่เกิดขึ้นกับการพิมพ์โดยรอบในปัจจุบัน


ขอบคุณ! สิ่งนี้มีประโยชน์ แต่ฉันไม่เห็นปัญหา GitHub ที่พูดถึง @types npm org @types org สำหรับ/// <referenceสถานการณ์UMD โดยเฉพาะหรือไม่ คอมไพลเลอร์ TypeScript จะค้นหาประเภทภายใต้node_modules/@types(ตามที่ค้นหาโมดูลในnode_modulesเมื่อใด'moduleResolution': 'node') โดยอัตโนมัติหรือไม่ สิ่งนี้หมายความว่าอย่างไรtypings- ยังจัดการการอ้างอิงโดยรอบ เกี่ยวข้องกันในทางใด?
Ronald Zarīts
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.