arrays - 如何从数组元素访问方法?
问题描述
我最近开始在我的课程中添加 setter 和 getter 方法。由于这样做,我的代码的许多部分都被破坏了,我无法访问 getter 方法。
举个例子:
private loadInputs() : Input[] {
var inputs = <Input[]>this.get('inputs');
inputs.sort((a,b) => a.QuoteRef().localeCompare(b.QuoteRef()))
return( inputs || [] );
}
我的输入类有 2 个变量,_Project: string _line: string 我使用 QuoteRef() 方法访问
public QuoteRef(): string {
return this._Project.concat('-' + this._Line.toString().padStart(3,'0'));
}
每当我尝试从我的类中访问被转换为输入的项目的方法或 getter 时,我都可以看到变量(尽管由于它们是私有的而不能访问它们),但原型部分不包含任何方法。
这会在网站控制台中触发以下错误:TypeError: a.QuoteRef is not a function
我究竟做错了什么?
更新
我通过如下更新代码让它工作:
inputs.sort((a,b) => {
let first = new Input(a);
let second = new Input(b);
return first.QuoteRef().localeCompare(second.QuoteRef());
});
解决方案
没有看到您的完整课程,我只能猜测,但我认为您的 a 和 b 不是您期望的类型。我看不到 this.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 的输出转换为 <Input[]>。
推荐阅读
- css - 如何在 Vue.js 中通过重启和状态反馈来控制 CSS 动画?
- java - 如何在kotlin中访问java类的静态变量?
- php - 发送表单时未使用AngularJS控制器
- java - 线程“主”java.lang.NumberFormatException 中的异常:不是版本:9
- typescript - 如何构造一个类型来描述对函数参数进行的突变?
- android - 是否有可能避免来电的平视通知?
- dynamics-crm - 尝试创建 salesorderdetail 记录时出错
- r - 使用ggplot添加到投影地图时R饼图扭曲
- c++ - Eigen::Map 默认模板参数如何工作?
- azure - Microsoft 团队开发:无法在 Microsoft 团队中获取 messageReaction 事件 - 消息扩展