Не могу бросить предмет на путь в paperjs - PullRequest
0 голосов
/ 05 апреля 2020

Скажем, у вас есть:

let path = new Path([new pt(1, 1), new pt(2, -5)]);
path.strokeColor = new Color(0, 0, 0);

Затем вы клонируете свой путь:

path = path.clone();

Вы получаете:

TS2740: Тип "Элемент" отсутствуют следующие свойства из типа «Путь» ...

Хорошо, хорошо. Итак, вы делаете:

path = path.clone() as Path;

И вы получаете:

TS2749: «Путь» относится к значению, но используется здесь как тип.

Странно ... Так что если я go с определением Path:

Path: typeof Path

и, как ни странно, с определением paper.Path:

class Path extends PathItem {...}

Что здесь происходит? Почему у бумаги js есть такой извилистый граф типа? Я беспокоюсь, что выполнение as paper.Path вызовет побочные эффекты для PaperScope, связанного с paper.

1 Ответ

1 голос
/ 06 апреля 2020

На самом деле это ошибка, о которой я только что сообщил здесь (я работаю над Paper. js Создание определения TypeScript). path.clone() тип возвращаемого значения должен быть Path, а не Item.

. Причина, по которой определение машинного текста Paper. js настолько сложное, состоит в том, что библиотека имеет довольно старую JavaScript базу кода, и некоторые его части трудно отобразить в TypeScript.
Кроме того, определение TypeScript автоматически генерируется из кода JSDo c comments, который добавляет еще один уровень сложности ...

Во всяком случае, я рассмотрим эту ошибку, и пока вы можете безопасно обойти проблему с помощью утверждения типа:

path = path.clone() as paper.Path;
...