typescript - CSS ელემენტური კვანძების იმპორტირება Angular 6 აპლიკაციაში


მინდება დავაყენო და გამოვიყენო css-element-queries ბიბლიოთეკა.

ინსტალაციისთვის, მე გამოვიყენე შემდეგი ბრძანება:

npm i css-element-queries

ამის შემდეგ, მე ვცადე კლასი ResizeSensor ბიბლიოთეკიდან ასე შემომეტანა:

import { ResizeSensor } from 'css-element-queries';

მაგრამ კომპილატორი იღებს შემდეგ შეცდომას:

მოდულის 'css-element-queries'-ისთვის დეკლარაციის ფაილი ნაპოვნი არ არის. 'c:/PrjNET/Elevation3/FW/4.00/Mainline/Framework/Development/Client/ElevationJS/ngcore/node_modules/css-element-queries/index.js' implicitly აქვს 'any' ტიპი. სცადეთ npm install @types/css-element-queries თუ არსებობს, ან დაამატეთ ახალი დეკლარაციის (.d.ts) ფაილი, რომელიც შეიცავს `declare module 'css-element-queries';`

შეცდომის შეტყობინებაზე დაყრდნობით, მე ვცადე შემდეგი npm ბრძანების გაშვება:

npm install @types/css-element-queries

მაგრამ კომპილატორმა გამოიტანინა შემდეგი შეცდომა:

npm ERR! კოდი E404 npm ERR! 404 ვერ მოიძებნა: @types/css-element-queries@latest

როგორ შემიძლია css-element-queries ბიბლიოთეკის იმპორტი?

პასუხი #1

მე არ ვიყენებ Angular-ს, მაგრამ ცოტა ხნის წინ ვიყავი ტიპსკრიფტზე დაფუძნებულ აპლიკაციაში ResizeSensor-ის იმპორტირების შეხვედრისას. არ ვიცი, როდის დაამატა css-element-queries-მა ResizeSensor.d.ts, მაგრამ ახლა ის პაკეტის ნაწილი გახდა.

თუმცა, ის ფაილი არასწორია. მე ამისთვის დავაკისრე პრობლემა GitHub-ზე. გუშინ შევისწავლე, როგორ შეიძლება ის იმპორტირებული, და ბოლოს წავიკითხე ტერმინების ტიპების შესახებ და როგორ შექმნა typings ფაილი TypeScript-ის დოკუმენტაციაში.

ამან მე მიიყვანა სწორი გზისკენ, როგორ განსაზღვროთ ResizeSensor-ის ტიპების ფაილი. ძირითადად, აიღეთ ის GitHub-ის რეპოზიტორიიდან და შეცვალეთ ექსპორტის ხაზი ასე:

export default ResizeSensor;

თვის

export = ResizeSensor;

მაშინ შეგიძლიათ გამოიყენოთ ეს როგორც თქვენი იმპორტი:

import ResizeSensor = require('Libs/css-element-queries/ResizeSensor');

თქვენი გზა css-element-queries-ის მიმართ განსხვავებული იქნება, რადგან თქვენ ვერ შეძლებთ ამის წამოღებას npm-დან, სანამ პაკეტის მემკვიდრე არ გამოასწორებს .d.ts ფაილს.

აქ არის ბმული github-ის პრობლემაზე.

პასუხი #2

უპირისპიროდ იმ ფაქტს, რომ typings პაკეტი ჯერ არ არსებობს, მე შემიძლია გამოვიყენო css-element-queries პაკეტი შემდეგი იმპორტებით:

import * as ElementQueries from 'css-element-queries/src/ElementQueries';
import * as ResizeSensor from 'css-element-queries/src/ResizeSensor';

ატომი ჯერ კიდევ იძლევა ინფორმაციულ გაფრთხილებებს იმის შესახებ, რომ ვერ პოულობს დეკლარაციის ფაილს, მაგრამ ის მაინც მუშაობს. იმედი მაქვს, ეს დაეხმარება!