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;