Средства доступа доступны только при нацеливании на 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" JavaScriptnode 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)
Вы можете создать файл tsconfig.json с помощью приведенной ниже команды.
tsc --init
Попробуйте использовать tsc myTS.ts --target ES5
это потому, что TypeScript должен компилятор сценария Traget ECMA 5.
Наконец-то у меня получилось. Запустите файл, затем установите целевой флаг
tsc script.ts --t es5
введите описание ссылки здесь
tsc -target "es5" filename && node filename
Нет необходимости указывать расширение.