我开始研究Angular,但是我无法解决将打字稿文件转换为javascript的问题。我已经创建了AngularCLI项目和简单的打字稿文件:
class Example {
msg = 'Some message';
}
,我尝试使用tsc命令:tsc example.tsc将其转换为js。这是生成的javascript文件:
var Example = /** @class */ (function () {
function Example() {
this.msg = 'Some message';
}
return Example;
}());
我有一些错误
node_modules/@types/selenium-webdriver/remote.d.ts:139:29 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.
我认为(甚至可以肯定)问题出在javascript版本中(即使错误也是如此)。这是tsconfig.json文件:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
}
}
所以我做了建议的事情。我将模块,目标,库更改为至少ES2015( 一切都在一起,分别)-它没有帮助。我尝试了SO,jetbrain论坛等提供的许多解决方案,但对我没有任何帮助。
我使用webstorm 2018.3版本。节点版本为10.14.1。 Tsc版本是3.1.6。
答案 0 :(得分:1)
您更新的using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.ObjectModel;
namespace SimpleGridX
{
class PersonCollection : ObservableCollection<Person>
{
public PersonCollection()
{
// Load the collection with dummy data
//
Add(new Person()
{
FirstName = "Elin",
LastName = "Binkles",
Age = 26,
Occupation = "Professional"
});
Add(new Person()
{
FirstName = "Samuel",
LastName = "Bourts",
Age = 28,
Occupation = "Engineer"
});
Add(new Person()
{
FirstName = "Alan",
LastName = "Jonesy",
Age = 37,
Occupation = "Engineer"
});
Add(new Person()
{
FirstName = "Sam",
LastName = "Nobles",
Age = 25,
Occupation = "Engineer"
});
}
}
}
定位到tsconfig.json
,现在看起来不错。现在的问题是如何编译。当我问您如何编译时,您写道:
...在Webstorm中使用命令行,使用“ tsc filename.tsc”命令。
当我们将文件传递给编译器时,编译器将忽略我们的es2018
。 official tsconfig.json documentation说:
在命令行上指定输入文件时,将忽略tsconfig.json文件。
如果要在命令行上传递特定文件并使用特定选项进行编译,请在命令行上传递这些选项(例如tsconfig.json
选项)。
lib