首页 > 解决方案 > 带有 Typescript 的 NodeJS 中的“TypeError:不是函数”

问题描述

我在带有 TypeScript 的 nodeJS 中遇到了这个问题。我已经测试过没有这个和有这个。

this.funktion2(); ^

类型错误:this.funktion2 不是函数

功能1();//案例#两个 ^

ReferenceError: funktion1 未定义

这是我的示例代码:

class App
{
  constructor()
  {
    setTimeout(function(){
      console.log('Hier 1');
      this.funktion2();
    }, 2500);

    //I have only one of this cases in use
    this.funktion1(); //case #one
    funktion1();      //case #two
  }

  function funktion1()
  {
    console.log('Funktion 1');
  }

    funktion2()
    {
      console.log('Funktion 2');
    }
}

new App();

我该如何修复它或为它提供解决方法?

感谢所有帮助。

标签: node.jstypescriptionic2

解决方案


尝试以下示例

class App {
  constructor() {
    setTimeout(() => {
      console.log('Hier 1');
      this.funktion2();
    }, 2500);

    this.funktion1(); //case #one
  }

  funktion1() {
    console.log('Funktion 1');
  }

  funktion2(){
    console.log('Funktion 2');
  }
}

new App();

另一件事是,setTimeout如果您使用函数,则无法访问类 context this。该函数创建一个新的上下文,所以一个新的this

setTimeout(function(){
  console.log('Hier 1');
  this.funktion2();
}, 2500);

要访问当前上下文:

setTimeout(() => {
  console.log('Hier 1');
  this.funktion2();
}, 2500);

推荐阅读