如何从数组元素访问方法



我最近主动将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的输出强制转换为<输入[]>。

相关内容

  • 没有找到相关文章

最新更新