无法将项目投射到paperjs中的路径

问题描述 投票:0回答:1

说您有:

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

然后克隆路径:

path = path.clone();

您得到:

TS2740:类型'Item'缺少类型'Path'中的以下属性...

好吧。因此,您可以这样做:

path = path.clone() as Path;

您得到:

TS2749:“路径”指的是一个值,但此处被用作类型。

奇怪...所以,如果我转到Path的定义:

Path: typeof Path

以及令人惊讶的是paper.Path的定义:

class Path extends PathItem {...}

这里发生了什么?为什么paper.js具有如此复杂的类型图?我担心执行as paper.Path会对与PaperScope关联的paper产生副作用。

typescript paperjs
1个回答
0
投票

这实际上是我刚刚报告的错误here(我是从事Paper.js TypeScript定义生成的人)。 path.clone()返回类型应该是Path,而不是Item

之所以Paper.js打字稿定义如此复杂,是因为该库具有相当古老的JavaScript代码库,并且其中的某些部分很难在TypeScript中进行映射。最重要的是,TypeScript定义是从代码JSDoc注释自动生成的,这增加了另一层次的复杂性...

无论如何,我将看看这个错误,现在您可以通过类型断言安全地解决此问题:

path = path.clone() as paper.Path;
© www.soinside.com 2019 - 2024. All rights reserved.