我正在尝试运行此代码,但它给了我以下错误:
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";
}
}
答案 0 :(得分:30)
唯一对我有用的是在macOS和Windows上指定Target
。
tsc --target es5 script.ts
您可以在终端上运行该命令。
答案 1 :(得分:16)
尝试在项目中设置tsconfig.json文件:
{
"compilerOptions": {
"target": "es5"
}
"files": []
}
将告诉typescript编译器专门定位一个版本。
答案 2 :(得分:7)
我遇到了同样的问题。我从docs读到的是,如果指定文件,则会忽略tsconfig.json文件。
我的tsconfig.json文件
{
"compilerOptions": {
"target": "es5"
},
"include": [
"*.ts"
]
}
我从命令行运行它
tsc && node *.js
答案 3 :(得分:2)
我知道这是一个古老的对话,但我认为对于所有开发人员来说,这个解决方案可能是一个非常有用的命令。
您可以在终端,命令提示符,Git Bash等中使用此命令轻松解决:
tsc --target ES2016 Animal.ts --watch
或
tsc --target es5 Animal.ts --watch
--watch
是可选的,意味着您不需要在每次修改中编译代码。
答案 4 :(得分:1)
在Windows中,
tsc --target es5 filename.ts
选项可以是:' es3',' es5',' es6',' es2015',' es2016&#39 ;,' es2017',' esnext'。 (没有'')
答案 5 :(得分:1)
遇到了同样的问题,它可以在单个文件中使用!
if (!_inAir && Input.GetButtonDown("Jump")) {
tsc -target "es5" filename && node filename
带引号不需要提及文件扩展名
"es5"
-将打字稿转换为“ es5” JavaScript
tsc -target "es5" filename
-运行已编译的javascript文件
答案 6 :(得分:0)
尝试使用Visual Studio Code编译TypeScript代码时遇到了同样的问题。 这解决了这个问题:
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"
}
]
}
答案 7 :(得分:0)
使用Visual Stido 2017?
1-解决方案资源管理器&gt;右键单击到项目
2-添加&gt;新项目
3-(搜索部分&gt;键入此&gt;打字稿)
4-选择“TypeScript Json配置文件”
多数民众赞成在这一步骤结束时,tsconfig.json将被添加到项目中,默认设置应用于ES5
你不必改变任何东西。只需重新编译你的项目并输出错误。
答案 8 :(得分:0)
在这里,您需要将开关传递给类型脚本编译器,因此它以ECMAScript文件为目标。为此,请在终端
中输入以下代码tsc(你的ts档案).ts - 目标ES5 并运行你的bulid js文件
节点(你的js文件)
答案 9 :(得分:0)
尝试使用tsc myTS.ts --target ES5
这是因为TypeScript应该Traget ECMA脚本5编译器。
答案 10 :(得分:0)
如果您要处理单个文件,则可以这样做
tsc your-file.ts --target ES2016 --watch
如果您希望在 tsconfig.json 中了解整个项目的配置
{
"compilerOptions": {
"target": "ES2016"
}
"files": []
}
您可能要使用ECMAScript数字“ es6”,“ es7”,“ es8” 或发行年份,例如“ ES2015”,“ ES2016”,“ ES2017” 。
ESNext 以最新支持的ES建议功能为目标。
答案 11 :(得分:0)
就我而言,我只需要添加目标即可。
tsc *.ts --target ES5 && node *.js
答案 12 :(得分:0)
这是一个简单的解决方案
tsc file.ts --target ES5 && node file.js
注意:请确保您使用文件名。仅当.ts文件的名称为文件时,这才适用。
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();
答案 13 :(得分:0)
最后为我解决了。运行文件,然后指定目标标志
tsc script.ts --t es5
enter link description here