#typescript #jts
#typescript #jts
Вопрос:
Недавно я столкнулся с трудностями при использовании библиотеки JSTS и ее привязок типов для Typescript, и хотя в конце концов я заставил это работать, я не совсем понимаю, почему.
Я начал с установки JSTS и его привязок:
npm i --S jsts
npm i --D @types/jsts
Изначально я попробовал следующее в своем коде:
import jsts from 'jsts';
const {OL3Parser} = jsts.io;
const parser = new OL3Parser();
Указанный выше тип -проверен без ошибок, но произошел сбой во время выполнения с помощью: Uncaught TypeError: Cannot read property 'io' of undefined
.
Кроме того, если бы я попытался ввести parser
переменную в приведенном выше примере следующим образом:
const parser: OL3Parser = new OL3Parser();
… тогда я бы получил:
TS2749: 'OL3Parser' refers to a value, but is being used as a type here. Did you mean 'typeof OL3Parser'?
Затем я попытался:
import OL3Parser from 'jsts/org/locationtech/jts/io/OL3Parser';
Это сбой проверки типов с:
TS7016: Could not find a declaration file for module 'jsts/org/locationtech/jts/io/OL3Parser'.
После некоторых онлайн-исследований я получил:
const jsts = require('jsts');
const parser: jsts.io.OL3Parser = new jsts.io.OL3Parser();
Вышеупомянутые проверки типов и работы по назначению, но мне не нравятся длинные полные имена, и я не понимаю, почему я должен использовать библиотеку именно таким образом.
Есть идеи?
Ответ №1:
Вам необходимо выполнить импорт jsts
следующим образом:
import * as jsts from 'jsts';
Причина этого в том, что jsts
это скорее экспортирует объект пространства имен вместо именованного экспорта или экспорта по умолчанию.
Таким образом, использование вышеуказанного подхода импортирует полное пространство имен модуля в одну переменную, что обеспечивает дополнительный доступ к различным jsts
классам.
Например:
const reader = new jsts.io.GeoJSONReader();
Комментарии:
1. Похоже, в моем случае это не работает.
require
Для меня работает только подход, о котором я упоминал в своем первоначальном вопросе.2. Вы создаете свой исходный код с помощью такого инструмента, как Typescript или Babel? Можете ли вы показать свою конфигурацию?