如何解决在 ts 中扩展外部 js 对象属性时的 this 关键字
我正在将代码库从 js 转换为 ts 并偶然发现一个难题:扩展外部 js 对象属性 getter 和 setter。
interface Player {
name: string;
position: { x: number; y: number };
_posHistory: [{ x: number; y: number }];
structures: Structures[];
}
Object.defineProperty(Player.prototype,"position",{
get() {
return this.pos; // i get "Unsafe member access .pos on an any value"
},set(pos) {
this._posHistory.push(pos); //same here
this.pos = pos; //and here
},configurable: false
});
在这种情况下,如何向 TS 键入提示“this”关键字,使其不是“any”?
解决方法
首先,您尝试将 Player 用作值,但它被定义为一种类型。您可以将类的接口转换为能够在 defineProperty
方法上使用它。
其次让我感到遗憾的是 Object.defineProperty
方法缺乏类型定义。但我会给你一个帖子的链接,以创建一个完整的类型化方法来使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。