Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 无法将项目强制转换到paperjs中的路径_Typescript_Paperjs - Fatal编程技术网

Typescript 无法将项目强制转换到paperjs中的路径

Typescript 无法将项目强制转换到paperjs中的路径,typescript,paperjs,Typescript,Paperjs,假设你有: 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:“路径”引用了一个值,但在此处用作类型 奇怪。。。因此,如果我转到路径的定

假设你有:

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:“路径”引用了一个值,但在此处用作类型

奇怪。。。因此,如果我转到路径的定义:

令人惊讶的是,纸张的定义。路径:


这是怎么回事?为什么paperjs有如此复杂的类型图?我担心像paper.Path那样操作会对与纸张相关的PaperScope造成副作用。

这实际上是一个bug,我刚刚报告说我是正在生成paper.js TypeScript定义的人。path.clone返回类型应为path而不是Item

Paper.js typescript定义之所以如此复杂,是因为该库有一个非常旧的JavaScript代码库,并且它的一些部分很难在typescript中映射。 最重要的是,TypeScript定义是从代码JSDoc注释自动生成的,这增加了另一个层次的复杂性

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

path = path.clone() as paper.Path;
class Path extends PathItem {...}
path = path.clone() as paper.Path;