Средства доступа доступны только при нацеливании на ECMAScript 5 и выше

Я пытаюсь запустить этот код, но он дает мне следующие ошибки:

Animal.ts (10,13): ошибка TS1056: средства доступа доступны только при нацеливании на ECMAScript 5 и выше. Animal.ts(14,13): ошибка TS1056: средства доступа доступны только при нацеливании на ECMAScript 5 и выше.

interface IAnimal{
    name : string;
    sayName():string;
}

class AnimalImpm implements IAnimal{
    private _name : string = '[Animal]';
    get name():string{
        return this._name;
    }

    set name(name:string){
        this._name = name;
    }

    constructor(name:string){
        this.name = name;
    }

    sayName():string {
        console.log(`My name is ${this.name}`);
        return "Hello";
    }
}

21 ответ

Единственное, что работает для меня, это указать Target на MacOS и Windows.

tsc --target es5 script.ts

Вы можете запустить команду на своем терминале.

Попробуйте настроить файл tsconfig.json в вашем проекте:

{
  "compilerOptions": {
  "target": "es5"
  }
  "files": []
}

это скажет компилятору машинописного текста нацеливаться на конкретную версию.

У меня была такая же проблема. Из документов я прочитал, что файл tsconfig.json игнорируется, если вы указываете файлы.

Мой файл tsconfig.json

{
  "compilerOptions": {
    "target": "es5"
  },
  "include": [
    "*.ts"
  ]
}

И я запускаю его из командной строки

tsc && node *.js

Если вы имеете дело с одним файлом, вы можете сделать это

tsc your-file.ts --target ES2016 --watch

Если вы хотите внутри вашего tsconfig.json для всей конфигурации проекта

{ "compilerOptions": { "target": "ES2016" } "files": [] }

Вы можете использовать числовой ECMAScript "es6", "es7", "es8" или год выпуска, например "ES2015", "ES2016", "ES2017".

ESNext предназначен для последних поддерживаемых функций, предлагаемых ES.

В Windows

tsc --target es5 filename.ts

Возможные варианты: "es3", "es5", "es6", "es2015", "es2016", "es2017", "esnext". (без '')

В моем случае мне нужно было только добавить цель.

 tsc *.ts --target ES5 && node *.js

Я знаю, что это старый разговор, но я думаю, что решение ниже может быть очень полезной командой для всех разработчиков здесь.

Вы можете легко решить с помощью этой команды в своем терминале, командной строке, Git Bash и т. Д.:

tsc --target ES2016 Animal.ts --watch

или же

tsc --target es5 Animal.ts --watch

--watch является необязательным и означает, что вам не нужно компилировать код в каждой модификации.

Была такая же проблема, сработало ли это... для одного файла!

tsc -target "es5" filename && node filename

  • "es5" с цитатами
  • не нужно упоминать расширения файлов

  • tsc -target "es5" filename - переводит машинописный текст в "es5" JavaScript

  • node filename - запускает транспилированный файл javascript

Просто установите «es5» в файле tsconfig.json :

      target: "es5"

И все.

Используете Visual Stido 2017?
1- Обозреватель решений> Щелкните правой кнопкой мыши проект
2- Добавить> Новый пункт
3- (раздел поиска> введите это> машинопись)
4- Выберите "Файл конфигурации TypeScript Json"

вот и все
в конце этого шага tsconfig.json будет добавлен в проект с набором по умолчанию, примененным к ES5

Вам не нужно ничего менять. просто перекомпилируй свой проект и ошибка выйдет.

Вот простое решение

tsc file.ts --target ES5 && node file.js 

Примечание. Убедитесь, что вы используете имя файла. Это применимо только для вас, если имя вашего файла.ts - file.

Я думаю, что более понятным способом написания этого кода был бы такой

class AnimalImpm {
        constructor(private _name?:string){
            this.name = name;
        }

        get name():string{
            return this._name;
        }

        set name(name:string){
            this._name = name;
        }

        sayName():string {
            console.log(`My name is ${this.name}`);
            return "Hello";
        }
    }

let data = new AnimalImpm('Animal');
    data.name;
    data.name = 'newAnimal';
    data.sayName();

У меня была такая же проблема при попытке компилировать код TypeScript с помощью кода Visual Studio. Это решило проблему:

1) tsconfig.json - добавить target в compilerOptions:

{
    "compilerOptions": {
        "target": "es5",  // <-- here!
        "module": "commonjs",
        "sourceMap": true
    }
}

2) tasks.json - добавить target аргумент:

{
    "version": "2.0.0",
    "tasks": [
        {
            "taskName": "build",
            "type": "process",
            "command": "tsc",
            "args": [
                "ts/Program.ts",
                "--outDir", "js",
                "--sourceMap",
                "--watch",
                "--target", "es5"  // <-- here!
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always"
            },
            "problemMatcher": "$tsc"
        }
    ]
}

Я нацелился esnextи даже с этим я получил ошибку. Но для меня это помогло, нацелив файлы .vue в tsconfig.json. Нравиться:

        "include": [
    "*.ts",
    "*.vue" // << added
  ],

У меня продолжалась та же проблема даже после добавления этого в мой файл tsconfig.json:

        "compilerOptions": {
    "target": "es5",
    "noEmitOnError": true
  }
}

но это было потому, что я все еще бежалtsc myFileName.tsв командной строке. Вместо этого мне просто нужно было запустить и не включать имя файла.tscсобирает все.tsфайлы :).

Здесь вам нужно передать переключатель типу скрипта компилятора, чтобы он был целевым файлом ECMAScript. Для этого введите ниже код в терминале

tsc (ваш ts файл).ts --target ES5 и запустите ваш файл bulid js

узел (ваш файл js)

Просто запустите эту команду

      tsc -target es6 Animal.ts

Вы можете создать файл tsconfig.json с помощью приведенной ниже команды.

      tsc --init

Попробуйте использовать tsc myTS.ts --target ES5

это потому, что TypeScript должен компилятор сценария Traget ECMA 5.

Наконец-то у меня получилось. Запустите файл, затем установите целевой флаг

tsc script.ts --t es5введите описание ссылки здесь

      tsc -target "es5" filename  && node filename 

Нет необходимости указывать расширение.

tsc .\main.components.ts --target ES5

Другие вопросы по тегам