使用Visual Studio Code设置打字稿的问题

时间:2018-11-25 21:08:07

标签: typescript visual-studio-code vscode-settings

背景

我是nodejs / typescript / VisualStudio代码的新手,并试图使用express&sequelize-typescript创建一个小项目。 我从Visual Studio(无代码)开始了该项目,但是遇到了很多错误或显示错误的问题,因此我切换到了Visual Studio Code。 我不再确定Visual Studio(不是代码)是自己安装了nodejs还是/和是否安装了另外一个。但是我知道我在PATH变量中有一个npm。

ts-nameof

然后在此项目中,我需要执行查询以按顺序排序,因此,我没有发现ts-nameof。而是使用硬编码列名或使用safetype字符串名称(我讨厌字符串!)。

所以我按照指示进行操作:

  • npm我输入脚本-D
  • 在tsconfig.json中添加插件compileOptions
  • 添加配置“ typescript.tsdk”

当事情变糟

  • ttypescript不会安装,因为我没有打字稿(嗯?),所以请安装它:npm i打字稿
  • 现在让我们使用nameof()方法!嗡嗡声Visual Studio代码告诉我找不到它。所以我加了
  

“ node_modules / ts-nameof / ts-nameof.d.ts”

tsconfig.json“文件”属性中的

。是的,它有效!

  • 不让我们运行任务“ tsc:watch-tsconfig.json”-是的,它可以编译!
  

ReferenceError:未定义nameof

但是运行时不喜欢它...

  • 在查看终端时,它仍然使用tsc而不是tscc,所以据我了解,我必须配置task.json,让我们开始吧! Visual Studio确实通过构建/监视为我生成了一个基本文件。我刚刚添加了命令/类型属性。 (请参阅最后的文件以供参考)

其他用户的奖励:

  • 如果看到错误

    终端进程终止,退出代码:2

可能是因为您使用的是仅适用于linux / osx的nodes_modules / npm / ttsc(我不知道它是否可以在带有Linux嵌入式系统的Windows 10上运行)

  • 全局安装ttypescript也不是一个好主意,因为它将在您的用户目录中安装它,并且您不能在task.json中使用%AppData%,因此您将必须使用C:\这样的完整路径。 Users \ 0xcdcdcdcd \ AppData \ Roaming ...

针对您的任务

  • 让我们通过运行任务“ node_modules.bin \ ttsc.cmd”一次编译它-终于!

顺便说一句:该文件还有其他问题,请参阅注释底部的task.json ...

  • 现在让我们为每个任务添加标签-太好了,现在我可以看到两个任务,而不是唯一的“ node_modules.bin \ ttsc.cmd”。 什么,它现在正在使用tsc!?

问题/问题

  • 在执行所有这些操作时,我尝试通过Google搜索我的许多问题,但均未成功。我有点担心我遇到的所有问题,为什么找不到任何东西?好的也许ttypescript未被任何人使用,但是task.json有我遇到的所有问题...?

我在使用Visual Studio(不是代码)上搜索Typescript / nodejs时遇到了问题,因为每个人都在使用Visual Studio代码...因此,我这方面肯定有问题。

  • 也许使用ts-nameof之外的其他方法(这使我使用ttypescript)是一个更好的主意?如果这不是一个好选择,您会推荐我什么。

  • 我仍然必须弄清楚如何配置“监视”任务运行以及如何在task.json中包含2个任务...

  • 请继续阅读我遇到的其他问题,例如“ typescript.tsdk”或“ problemMatchers”选项。

文件

.vscode / tasks.json:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "windows": {
        "command": "node_modules\\.bin\\ttsc.cmd",
        "type": "shell"
    },
    "tasks": [
        {
            //"label": "ttsc: watch",
            "type": "typescript",
            "tsconfig": "tsconfig.json",
            "option": "watch",
            "problemMatcher": [
                "$tsc-watch"
            ]
        },
        {
            //"label": "ttsc: build",
            "type": "typescript",
            "tsconfig": "tsconfig.json",
            "problemMatcher": [
                "$tsc"
            ]
        }
    ],
    "problemMatchers": [
        "$tsc"
    ]
}

Visual Studio Code似乎与此文件不符,从文档中我应该能够在“任务”对象中使用命令/类型(并且我认为是“ Windows”),但不能让我失望。

另外,当使用此文件运行任务时,Visual Studio Code要求我提供问题匹配器,并将此属性添加到task.json的根目录。

编辑:我确实也尝试在各处填充命令/类型属性(在根目录中,在我的所有任务中,以及在“窗口”中(在根目录中,以及在我的所有任务中) )。

.vscode / settings.json (工作区)

{
    "files.exclude": {
        "node_modules": true,

        // visual studio project
        "obj": true,
        "bin": true
    },

    // ts-nameof
    "typescript.tsdk": "node_modules/ttypescript/lib"
}

我也确实在用户设置中添加了“ typescript.tsdk”,以防万一。 但是我可以在该字段中编写任何内容,没关系,我永远也不会出错。

tsconfig.json

{
  "compilerOptions": {
    "target": "esnext",
    "module": "commonjs",
    "sourceMap": true,
    "noImplicitAny": true,
    "outDir": "dist",
    "baseUrl": "./dist/",
    "plugins": [{ "transform": "ts-nameof", "type": "raw" }],

    // for sequelize-typescript models
    "experimentalDecorators": true,
    // for sequelize-typescript
    "emitDecoratorMetadata": true
  },
  // Also part of experimentalDecorators
  "include": [
    "."
  ],
  "exclude": [
    "node_modules",

    // VisualStudio project
    "obj",
    "bin"
  ],
  "files": [ "node_modules/ts-nameof/ts-nameof.d.ts" ]
}

1 个答案:

答案 0 :(得分:0)

我仍然不知道发生了什么,但是我读到的tasks.json syntax似乎是基本的,语言对其进行了扩展,因此为什么类型可以通过打字稿来包含并包含tsconfig之类的属性。不幸的是,我没有找到打字稿的语法。

我最终像这样创建了shell任务:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "ttsc: watch",
            "type": "shell",
            "windows": {
                "command": "node_modules\\.bin\\ttsc.cmd",
                "args": [
                    "--watch", "-p", "tsconfig.json"
                ],
            },
            "problemMatcher": [
                "$tsc-watch"
            ]
        },
        {
            "label": "ttsc: build",
            "type": "shell",
            "windows": {
                "command": "node_modules\\.bin\\ttsc.cmd",
                "args": [
                    "-p", "tsconfig.json"
                ],
            },
            "problemMatcher": [
                "$tsc"
            ]
        }
    ]
}