Ошибка синтаксиса: неожиданный идентификатор node js - PullRequest
0 голосов
/ 21 апреля 2020
class Point {

    private x: number;
    private y: number;

    constructor(x: number, y: number) {
      this.x = x;
      this.y = y;
    }

    public distance(otherPoint: Point): number {
      return Math.sqrt(
          Math.pow(this.x - otherPoint.getX(), 2) +
          Math.pow(this.y - otherPoint.getY(), 2));
    }

    public getX() {
      return this.x;
    }

    public getY() {
      return this.y;
    }

  }

  class Circle {

    private center: Point;
    private radius: number;

    constructor(center: Point, radius: number) {
      this.radius = radius;
      this.center = center;
    }

    public isInside(otherPoint: Point): boolean {
      return this.center.distance(otherPoint) < this.radius;
    }

  }

  class Triangle extends Point {
      private z: number;

      constructor(x:number, y: number, z: number){
          super(x, y);
          this.z = z;
      }

    public getZ(){
        return this.z
    }

    public getPerimeter (otherPoint: Triangle): number{
        return otherPoint.getX() + otherPoint.getY() + otherPoint.getZ()
    }
  }

  let per = new Triangle(24, 61, 32);
  console.log(per);

, поэтому, когда я пытаюсь скомпилировать, он говорит

private x: number;
            ^

SyntaxError: Unexpected identifier

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Вы пытаетесь запустить файл TypeScript, как если бы это был JavaScript. JavaScript и TypeScript не совпадают, и node может понимать только JavaScript, но не TypeScript.

Вам необходимо установить пакеты typescript и ts-node. Вы можете сделать это глобально, чтобы вы могли использовать его везде, для отдельных файлов:

npm i -g typescript ts-node

Впоследствии вы можете использовать ts-node вместо node для запуска вашего файла:

ts-node myScript.ts

Это скомпилирует ваш файл TypeScript в JavaScript на лету и запустит результат с node для вас.

0 голосов
/ 21 апреля 2020

Я почти уверен, что есть проблемы с форматированием, или вы используете компилятор, которому не нравится синтаксис, но вот код, который я выполнил в https://www.typescriptlang.org/play/, и он работал отлично.

    class Point { 
    private x: number;
    private y: number;

    constructor(x: number, y: number) {
    this.x = x;
    this.y = y;
    }

    public distance(otherPoint: Point): number {
    return Math.sqrt(
        Math.pow(this.x - otherPoint.getX(), 2) +
        Math.pow(this.y - otherPoint.getY(), 2));
    }

    public getX() {
    return this.x;
    }

    public getY() {
    return this.y;
}
}

class Circle { 

    private center: Point;
    private radius: number;

    constructor(center: Point, radius: number) {
    this.radius = radius;
    this.center = center;
    }

    public isInside(otherPoint: Point): boolean {
    return this.center.distance(otherPoint) < this.radius;
    }    
}

class Triangle extends Point {
    private z: number;
    constructor(x:number, y: number, z: number) {
        super(x, y);
        this.z = z;
    }

    public getZ() {
        return this.z
    }

    public getPerimeter(otherPoint: Triangle): number {
        return otherPoint.getX() + otherPoint.getY() + otherPoint.getZ()
    }

}

let per = new Triangle(24, 61, 32);
console.log(per);

Запустите приведенный выше код в указанной мной ссылке, нажмите «Выполнить» и нажмите «F12», чтобы открыть консоль, вы увидите вывод из console.log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...