如何用Typescript编译单个文件



因此,我正在尝试创建一个Electron版本的angular web应用程序,以便在桌面上以原生外观运行。

我在package.json 中有以下脚本

{
"name": "app",
"version": "1.0.0",
"main": "main.js",
"license": "MIT",
"productName":"example",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"build-prod": "ng build --prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"electron-tsc": "tsc main.ts && ng build --base-href ./ && electron .",
},

main.ts文件基本上就是这里给出的示例。https://electronjs.org/docs/tutorial/first-app

问题是,当我运行命令'npm run electron-tsc'时,typescript正在扫描我目录下的子文件夹,并试图编译我的整个angular应用程序,但也有很多错误。

就像这样。

node_modules/@types/selenium-webdriver/http.d.ts:24:14-错误TS2583:找不到名称"Map"。您需要更改目标库吗?尝试将lib编译器选项更改为es2015或更高版本。

24个标题:地图;~~~

node_modules/@types/selenium webdriver/http.d.ts:48:14-错误TS2583:找不到名称"Map"。您需要更改目标库吗?尝试将lib编译器选项更改为es2015或更高版本。

48个标题:地图;~~~

node_modules/@types/selenium webdriver/remote.d.ts:139:29-错误TS2583:找不到名称"Map"。你需要改变你的目标吗图书馆尝试将lib编译器选项更改为es2015或更高版本。

139 setEnvironment(env:Map |{[name:string]:string}|null(:this;

My main.ts没有导入,命令指定只编译main.ts

碰巧的是,我仍然生成了一个有效的main.js文件,之后我可以手动运行ng build --base-href ./ && electron .,一切都很好,我无法用一个命令构建和运行它,这很令人沮丧,我不理解其中的错误。

这是我的tsconfig.json

{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}

使用--skipLibCheck将抑制错误,而不是修复错误。从短期来看,这是可以的(只是为了让你在处理根本原因时继续前进(,但由于它完全选择了不进行库类型检查,所以它真的是一把手枪。

要使TypeScript扫描声明文件并将其包含在编译中,它必须是您显式依赖的内容(您的项目中的importrequire(或隐式依赖的对象(它在您的tsconfig.json中添加到types中(。通常情况下,这并不完全是你的依赖,而是你依赖的依赖。为了实现真正的类型安全,树中的所有内容都必须有序。有时只是因为提供的打字不完美,需要修改。

您可以从更新@types/selenium-webdriver和一般更新依赖项开始。尝试运行npx npm-check --update以查看需要更新的内容。

如果这没有帮助,您可以为有问题的库编写类型声明(并将它们发送到DefinelyTyped或将它们保留在项目中(。

最新更新