Я установил пакет npm https://github.com/alferov/array-to-tree/
npm install array-to-tree --save
В его файле index.d.ts есть объявления функций и пространства имен:
export = arrayToTree;
declare function arrayToTree<T>(data: T[], options?: Partial<arrayToTree.Options>): Array<arrayToTree.Tree<T>>;
declare namespace arrayToTree {
interface Options {
childrenProperty: string;
parentProperty: string;
customID: string;
rootID: string;
}
type Tree<T> = T & {
children?: Array<Tree<T>>;
};
}
Я попытался импортировать его в мое угловое приложение таким образом:
import * as arrayToTree from 'array-to-tree';
Но я получил ошибку компиляции:
ошибка TS2307: не удается найти модуль 'arrayToTree'.
Я также пытался импортировать, используя стиль CommonJS:
import arrayToTree = require('array-to-tree');
и получил ошибку от редактора кода:
TS1202: назначение импорта нельзя использовать при нацеливании на модули ECMAScript. Попробуйте вместо этого 'import * as ns from "mod"'
, 'import {a} from "mod"'
или 'import d from "mod"'
.
Я перепробовал все предложенные варианты, но не решил проблему.
Я думал, что проблема может быть связана с файлом package.json в npm-package, потому что у него не было опции "typings": "index.d.ts"
. Но я попытался добавить эту опцию и не получил результата.
Я полагаю, что проблема заключается в импорте пространства имен вместе с функцией.
Или может быть проблема с совместимостью версии Typescript и формата файла index.d.ts? Я использую Typescript 3.2.2.
Что я делаю не так?
Обновление:
Я делаю пример на stackblitz:
https://stackblitz.com/edit/angular-ehjdfy
В консоли произошла ошибка.