打字稿编译器(tsc)命令不适用于tsconfig

typescript compiler (tsc) command not working with tsconfig

我全局安装了 typescript ( npm install typescript -g )

然后创建了一个文件夹,运行 npm --init,然后 npm intall typescript --save-dev - 它安装了 typescript@2.1.4

在文件夹中,我创建了'helloworld.ts`

var msg = 'Hello World';
console.log (msg);

运行 带有文件选项的 tsc 命令 - tsc helloworld.ts 并看到它编译为 helloworld.js.

接下来,我想使用 tsconfig.json,所以我 运行 tsc --init - 这不起作用,说 Unknown option 'init'

我说好吧,让我尝试手动添加 tsconfig.json 并将其添加到文件夹根目录中,如下所示:

{
    "compilerOptions": {
        "target": "es5"
    },
    "files": [
        "helloworld.ts"
    ]
}

和我 运行 tsc 在命令提示符下,但它不起作用并向我输出语法、示例和如何使用 tsc Syntax: tsc [options] [file] ...[=23= 的选项]

怎么了?

where tsc 给出如下:

C:\Program Files (x86)\Microsoft SDKs\TypeScript.0\tsc.exe
C:\Program Files (x86)\Microsoft SDKs\TypeScript.0\tsc.js
C:\Users\Kap\AppData\Roaming\npm\tsc
C:\Users\Kap\AppData\Roaming\npm\tsc.cmd

这就是问题所在:

C:\Program Files (x86)\Microsoft SDKs\TypeScript.0\tsc.exe
C:\Program Files (x86)\Microsoft SDKs\TypeScript.0\tsc.js

uninstall-update-remove-get-rid-off: Visual Studio 过时的扩展...

或从路径中删除它...

或重命名文件夹以确认问题...然后核对它:)

检查如果你这样做会发生什么:

md x
cd x
tsc --init
npm init -y
npm link typescript
echo console.log('it works') > index.ts
tsc -p .
node .

应该输出

it works

还有。 如果
,我需要在项目本地安装打字稿 你依赖的模块,依赖它
您需要在“您的”代码中使用编译器功能
您需要使用不同于全局安装的版本

初始化:

tsc --init

编译

a 'project'(基于tsconfig.json):

tsc -p .

其中.表示此处

编译'other'项目

tsc -p other/tsconfig.json

More help

我在 Windows 系统上调整 tsc 命令的 Typescript 版本是:

在此处删除 Typescript 1.0 路径。 (Start button-> Type : environment variables,点击选项(英文版Windows这里),选择系统环境变量PATH)。

后来我输入了:

npm link 打字稿

然后我用Chocolatey的refreshenv命令刷新了我调整的系统PATH环境变量。

刷新

然后 运行 命令: tsc -v 我有: 版本 2.2.1

Typescript 的当前版本是 3.5+,但我全局安装了 Typescript 2.2.1,因为我正在使用该版本学习 Typescript 课程。

我遇到的问题是我没有收到任何错误,但我也没有收到任何输出。

我意识到我的 tsconfig.json 文件中有 "noEmit": true

当我删除它时,它按预期工作:)

每次我在谷歌搜索“typescript tsc no output”后都来到这里都是出于同样的原因。因为这肯定发生过不止一次,所以我也会把我的答案扔进戒指里。

每次我遇到这种情况都是因为 TypeScript 配置了 composite: true 并且我删除了输出目录(在 tsconfig 中设置为 outDir 的目录),但没有t 删除 tsconfig.tsbuildinfo 文件。

这导致 TypeScript 假定输出不需要更新,因为 tsbuildinfo 文件上的时间戳表明最后一次构建是在所有文件都被修改之后。