这个问题与this one非常相似,但是有一个非常重要的区别:使用打字稿。
我正在尝试从mocha测试中获取当前的测试标题,但是由于使用了打字稿,因此此代码无法正常工作:
import 'mocha';
describe("top", () => {
console.log(this.title);
console.log(this.fullTitle());
it("test", () => {
console.log(this.test.title);
console.log(this.test.fullTitle());
});
});
Typescripts掩盖了this
,因此无法再访问本机JavaScript的this
。
以前有人遇到过这种情况吗?有什么解决方法吗?
答案 0 :(得分:1)
您的问题不是您使用TypeScript,而是您使用箭头功能。
箭头功能自动将this
绑定到定义该功能的this
。
由于它们都使用箭头功能,因此您的this
是在全局级别找到的this
,它是严格模式之外的global
或严格模式下的undefined
模式。 (由于您使用的是ES模块,因此根据规格,您将自动进入严格模式)
导入“摩卡”;
describe("top", function() {
console.log(this.title);
console.log(this.fullTitle());
it("test", function() {
console.log(this.test.title);
console.log(this.test.fullTitle());
});
});