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

วิธีการนำเข้า plotly.js เข้าไปใน TypeScript?


ฉันกำลังพยายามนำเข้า plotly.js ลงใน TypeScript โดย Plotly.js ถูกติดตั้งโดยใช้ npm ในไฟล์ TypeScript ของฉันฉันใช้

import 'plotly.js';

ไม่เป็นไร แต่ฉันได้รับข้อผิดพลาดในโค้ดเช่น Plotly.<member>:

error TS2304: Cannot find name 'Plotly'

เมื่อฉันพยายาม

import Plotly = require('plotly.js');

ฉันกำลังได้รับ

error TS2307: Cannot find module 'plotly.js'.

คำตอบ #1

มีเวอร์ชัน Definitely Typed สำหรับ plotly.js (ลิงก์ Github) สิ่งนี้ช่วยให้คุณสามารถใช้เวอร์ชัน Javascript ธรรมดาภายใน Typescript ทำตามขั้นตอนเหล่านี้เพื่อตั้งค่าสภาพแวดล้อมของคุณ:

npm install --save plotly.js
npm install --save-dev @types/plotly.js

จากนั้นในโค้ดของคุณคุณสามารถทำสิ่งต่อไปนี้ (ตัวอย่างนำมาจาก Github):

import * as Plotly from 'plotly.js';

const data: Plotly.BarData[] = [
  {
    x: ['giraffes', 'orangutans', 'monkeys'],
    y: [20, 14, 23],
    type: 'bar'
  }
];

Plotly.newPlot('test', data);

สุดท้ายคุณจำเป็นต้องแปลง Typescript เป็น javascript ด้วย tsc และเตรียมโค้ดเพื่อนำไปใส่ในเว็บเพจของคุณด้วย browserify.

นี่ก็ใช้ได้กับ Ionic 2 แล้ว! ตรวจสอบให้แน่ใจว่าคุณเพิ่มแพ็กเกจต่อไปนี้ด้วยตัวเอง:

npm install --save glslify
npm install --save mapbox-gl

คำตอบ #2

ประเภทสำหรับ plotly.js พื้นฐาน & Co.

คุณยังสามารถใช้ประเภทร่วมกับแพ็กเกจ npm แบบบางส่วนเช่น basic หรือ cartesian ตั้งแต่ v1.39.0 ตัวอย่างสำหรับ plotly.js basic (มี scatter, pie และ bar)

npm i plotly.js-basic-dist
npm i -D @types/plotly.js

เพิ่มสิ่งต่อไปนี้ใน tsconfig.json:

"compilerOptions": {
  // make aliases absolute imports relative to the project root
  "baseUrl": "./",                
  "paths": {
    "plotly.js-basic-dist": [
      "node_modules/@types/plotly.js"
    ]
  }
}

การตั้งค่า paths ข้างต้นจะทำหน้าที่แมปแพ็กเกจ plotly.js-basic-dist ที่คุณนำเข้าไปยังประเภทที่กำหนดใน @types/plotly.js ดังนั้นคุณสามารถใช้งานร่วมกับ plotly.js-basic-dist ได้ ข้อมูลเพิ่มเติม:

  • URL หลัก
  • เส้นทาง

คำตอบ #3

ลงเอยด้วย:

declare function require(moduleName: string): any;
var Plotly = require('plotly.js/lib/index-basic.js');

(อ้างอิงถึง index-basic.js เพราะฉันต้องการเพียงฟังก์ชันพื้นฐาน ใช้ index.js สำหรับไลบรารีเต็มรูปแบบ)

แก้ไข (ก.พ. 2018):

วิธีที่แนะนำตอนนี้คือการเพิ่ม path ลงในไฟล์ tsconfig.json ดังนี้:

"compilerOptions": {
    "paths": {
        "plotly.js": [
            "../node_modules/plotly.js/lib/core.js"
        ]
    }
}

แล้วจากนั้นนำเข้าในไฟล์ .ts แบบ

import * as Plotly from 'plotly.js';

หมายเหตุ: ในเส้นทางที่ฉันรวมไว้ มีเพียง core.js ซึ่งประกอบด้วยกราฟ scatter คุณสามารถนำเข้ากราฟอื่น ๆ ตามที่คุณต้องการ

(ฉันกำลังใช้มันกับ Angular CLI - Angular 5.2 และ Typescript 2.7.1)

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