admin 管理员组

文章数量: 1086019

Just trying to write a function within a class using typescript.

class Test 
{
    function add(x: number, y: number): number {
        return x + y;
    }
}

This results in the following error:

TypeScript Unexpected token, A constructor, method, accessor or property was expected.

I copied the example from: .html

Am I missing something? I'm confused!

Just trying to write a function within a class using typescript.

class Test 
{
    function add(x: number, y: number): number {
        return x + y;
    }
}

This results in the following error:

TypeScript Unexpected token, A constructor, method, accessor or property was expected.

I copied the example from: https://www.typescriptlang.org/docs/handbook/functions.html

Am I missing something? I'm confused!

Share Improve this question edited Mar 28, 2017 at 13:29 Mike Chamberlain 42.4k28 gold badges112 silver badges159 bronze badges asked Mar 28, 2017 at 13:18 Guido KleijerGuido Kleijer 5891 gold badge6 silver badges8 bronze badges 2
  • 1 You copied an example from the section on functions into the middle of a class. Check out any documentation, tutorial or blog post on JS/TS classes to see how to define methods. – user663031 Commented Mar 28, 2017 at 13:36
  • 1 This function key word is wrong. You can not use it inside a class to define a method. Just remove it and this code will be fine. – Diullei Commented Mar 28, 2017 at 14:13
Add a comment  | 

3 Answers 3

Reset to default 68

You shouldn't use the function keyword in a Typescript class definition. Try this instead:

class Test { 
    add(x: number, y: number): number {
        return x + y;
    }
}

TypeScript does not allow function declarations as class members; it has a slightly different syntax for that...

class Test 
{
    // This will bind the add method to Test.prototype
    add(x: number, y: number): number 
    {
        return x + y;
    }

    // This will create a closure based method within the Test class
    add2 = (x: number, y: number) => {
        return x + y;
    }
}

The same error is also thrown when you try to access a property outside a life-cycle hook. You need to access them in a life-cycle hook or constructor like:

class Test {

  x: number;
  y: number;

  add(x: number, y: number): number {
    this.x = x;
    this.y = y;
    return this.x + this.y;
  }
}

...
export class Component implements OnInit {

  test: Test = new Test();
  test.x = 0; // NOK, will throw: Unexpected token, A constructor... error

  constructor() { 
    test.x = 0; // OK
  }

  ngOnInit(): void {
    test.x = 0; // OK
  }
}

本文标签:

Error[2]: Invalid argument supplied for foreach(), File: /www/wwwroot/roclinux.cn/tmp/view_template_quzhiwa_htm_read.htm, Line: 58
File: /www/wwwroot/roclinux.cn/tmp/route_read.php, Line: 205, include(/www/wwwroot/roclinux.cn/tmp/view_template_quzhiwa_htm_read.htm)
File: /www/wwwroot/roclinux.cn/tmp/index.inc.php, Line: 129, include(/www/wwwroot/roclinux.cn/tmp/route_read.php)
File: /www/wwwroot/roclinux.cn/index.php, Line: 29, include(/www/wwwroot/roclinux.cn/tmp/index.inc.php)