我正在尝试使用Vue组件内部存储在Typescript类上的方法。
当尝试使用另一个类(恰好是Typescript Vue组件)在所述类上定义的方法时,Uncaught TypeError返回到控制台,提示我尝试使用的方法不是功能
请考虑以下Paper类:
export class Paper {
paperSize: number;
documentTitle: string;
constructor() {
paperSize = 1;
documentTitle = "Arbitrary title";
}
getDocumentRatio(): number {
return ArbitraryLibrary.arbitraryNumericFunction(this.paperSize);
}
}
在另一个类中尝试使用此类(Vue组件)时:
@Component()
export class PaperUser {
paper = new Paper();
paperUserMethod() {
...
const unimportant = this.paper.getDocumentRatio();
...
}
...
// Wherever the method gets used
this.paperUserMethod();
...
}
该方法的执行随后被中断,因为以这种方式使用该函数会产生TypeError
最初认为这可能是一个有约束力的问题,我尝试了更多类似的方法
...
this.paper.getDocumentRatio().bind(this.paper);
...
但是显然这是行不通的,因为以这种方式进行绑定与方法链接一样有效-IDE(VSCode)断言属性'bind'在'number'类型上不存在。
答案 0 :(得分:0)
一方面,您必须使用this.myAttribut
在构造函数中设置属性,另一方面,您要使用类的方法实现中的方法,您可以尝试以下方法:
class Paper {
paperSize: number;
documentTitle: string;
constructor() {
this.paperSize = 1;
this.documentTitle = "Arbitrary title";
}
getDocumentRatio(): number {
// try to be trivial on first attempt
return this.paperSize;
}
}
class PaperUser {
paper = new Paper();
paperUserMethod() {
return this.paper.getDocumentRatio();
}
usePaperuser(){
this.paperUserMethod();
}
}