typescript - 无法通过动态字符串访问“this”对象
问题描述
我的 Nuxt + TS App 中有一些方法。我尝试做一些功能`
nextPage(paginationName: string): void {
this[`${paginationName}Data`].pagination
.nextPage()
.then((newPage: number) => {
this.getData(paginationName, newPage);
});
},
并通过 'this' 访问我的计算,但我的编译器无法通过 error 执行此操作 Element implicitly has an 'any' type because expression of type 'string' can't be used to index type
。有了@ts-ignore
它就可以了,但我必须取消这条线。这是我的计算
soonData(): ISoonData {
const soonData = this.$store.getters['soonData'];
const pagination = new Pagination(
Number(soonData.currentPage),
soonData.maxPage
);
return new soonData(soonData, pagination, 'soon');
},
我使用 Options-api 来声明我的组件 export default Vue.extend({})
解决方案
我通过上下文替换解决了它,例如:
let _this: any
export default Vue.extend({
...
methods: {
nextPage(paginationName: string): void {
_this[`${paginationName}Data`].pagination
.nextPage()
.then((newPage: number) => {
this.getData(paginationName, newPage);
});
},
}
...
created () {
_this=this
}
})
推荐阅读
- windows - Process Explorer 报告的不合理的巨大进程虚拟内存大小
- android - 在活动打开时每 1 秒循环一个线程是不好的做法吗?
- google-apps-script - 如果单元格为空白,则将单元格值还原为特定公式
- java - 为什么@Transactional 在某些情况下会忽略 Lazy fetch
- c# - 获得最小输出然后跟踪输入
- r - 如何将条形更改为降序?
- php - 错误:SQLSTATE [23000]:违反完整性约束:1048 列“用户名”不能为空
- html - 我在悬停时显示导航菜单有问题
- android - 查询 2 个 GeoPoints 之间的位置
- python-3.x - 从工作人员访问 SparkSession 的正确方法是什么