我最近主动将setter和getter方法添加到我的类中。自从这样做之后,我的代码的许多部分都被破坏了,我无法访问getter方法。
举下面的例子:
private loadInputs() : Input[] {
var inputs = <Input[]>this.get('inputs');
inputs.sort((a,b) => a.QuoteRef().localeCompare(b.QuoteRef()))
return( inputs || [] );
}
我的输入类有2个变量,_项目:字符串_行:字符串我使用方法QuoteRef((访问
public QuoteRef(): string {
return this._Project.concat('-' + this._Line.toString().padStart(3,'0'));
}
每当我试图从类中访问一个方法或getter时,只要该项被转换为Input,我就可以看到变量(尽管不能访问它们,因为它们是私有的(,但原型部分不包含任何方法。
这会在网站控制台中触发以下错误:TypeError:a.QuoteRef不是函数
我做错了什么?
更新
我通过如下更新代码使其工作:
inputs.sort((a,b) => {
let first = new Input(a);
let second = new Input(b);
return first.QuoteRef().localeCompare(second.QuoteRef());
});
如果没有看到完整的类,我只能猜测,但我认为您的排序中的a和b不是您期望的类型。我看不出这个.get('inputs'(做了什么,但我怀疑它没有返回一个带有Input类对象的数组。因此,找不到函数(不是函数(。你可以试试:
inputs.sort((a,b) => {
console.log(typeof a);
console.log(typeof b);
a.QuoteRef().localeCompare(b.QuoteRef());
})
检查类型。然后检查this.get实际返回的内容。
编辑:忘记提到您的IDE可能不会警告您,因为您将this.get的输出强制转换为<输入[]>。