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

คุณใช้ Twix (momentjs) กับ Typescript อย่างไร


มีใครเคยใช้ Twix กับ TypeScript แล้วสามารถแชร์วิธีที่ทำให้มันใช้งานได้บ้างไหม?

ฉันมี:

import * as moment from 'moment';
import * as twix from 'twix';

Moment ทำงานได้ดี อินเทลลิเซนส์และทุกอย่าง โมดูล Twix นำเข้าได้ดี และถ้าฉันพิมพ์ twix. ฉันสามารถเห็นอินเทอร์เฟซปรากฏขึ้น

แต่ฉันได้รับ:

คุณสมบัติ twix ไม่มีอยู่ใน Moment

เมื่อฉันพยายามใช้ moment(date).twix()

แก้ไข: ฉันได้ลองใช้ let twix=require('twix'); และ import twix=require('twix'); แล้วแต่ก็ไม่สำเร็จ

แก้ไข 2 ฉันรัน npm install moment และ npm install twix และ npm install @types/twix.

ฉันรู้ว่า moment ถูกติดตั้งและทำงานอย่างถูกต้อง ไฟล์ typings ที่ถูกใช้สำหรับ moment คือไฟล์ moment.d.ts ซึ่งรวมอยู่ในแพ็กเกจ npm ของ moment โดยตรง

ไฟล์ typings ที่ใช้สำหรับ twix อยู่ในแพ็กเกจ npm @types/twix

หลังจากที่ฉันทำการนำเข้า ถ้าฉันพิมพ์ let t=twix. จะมี intellisense ปรากฏขึ้นพร้อมกับ Twix, TwixFormatOptions, TwixIter, TwixParseAndFormatOptions ฯลฯ ดังนั้นฉันคิดว่า typescript กำลังรู้จักกับการพิมพ์ของ twix

การแก้ไขสุดท้าย

ปัญหาใน GitHub นี้อธิบายเหตุผลพื้นฐานที่ทำให้ประเภทของแพ็กเกจที่ขยาย momentjs เสีย และอ้างอิงคำร้องขอดึงที่จะแก้ไขมันอย่างถาวรเมื่อมันถูกรวมเข้าด้วยกัน

คำตอบ #1

ลองแทนที่:

import * as twix from 'twix';

ด้วย :

let twix = require('twix');

จากที่ฉันเข้าใจ Twix ถูกเขียนเป็นโมดูล CommonJS ไม่ใช่โมดูล ES6 ดังนั้นจึงมีวิธีการนำเข้าแตกต่างกัน

ข้อมูลเพิ่มเติมเล็กน้อยเกี่ยวกับความแตกต่างที่นี่

แก้ไข: ดูเหมือนว่าจะมีบางอย่างผิดพลาดกับการพิมพ์ twix เวอร์ชัน 2.0 วิธีแก้ปัญหาคือคัดลอกการพิมพ์ twix ก่อนเวอร์ชัน 2.0 จาก GitHub และเพิ่มลงในโปรเจกต์ของคุณ

คำตอบ #2

คุณสมบัติ twix ไม่มีอยู่ใน Moment

คุณจะต้องสร้างคำนิยามชนิดสำหรับ twix ซึ่งปัจจุบันยังไม่มีอยู่

แพตช์ด่วน

คุณสามารถระบุ any และมันก็จะเหมือนกับว่าคุณกำลังเขียนจาวาสคริปต์ที่ไม่ถูกตรวจสอบ:

(moment(date) as any).twix()

เพิ่มเติมเกี่ยวกับการยืนยันตัวตน: https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html

การแก้ไขที่เหมาะสม

คุณจำเป็นต้องสร้างคำนิยามที่ เสริม คำนิยามของ momentjs นี่เป็นงานที่ต้องทำพอสมควรและแนะนำให้ศึกษาข้อกำหนดของ typescript