TypeScript - Visual Studio 2015 Intellisense 无法找到模块

Sco*_*w18 5 visual-studio typescript visual-studio-2015

我在 Visual Studio 2015 中使用 TypeScript 智能感知时遇到问题。当我尝试从 Nuget 上的输入切换到使用 npm 安装它们时,问题就开始了。我有我需要的一切,node_modules/@types但智能感知没有找到类型,说它无法解析模块。该项目使用 Visual Studio 的构建和命令行中的 tsc 构建而没有错误。

我目前的猜测是,问题在于我使用的 TypeScript 版本与打字版本的版本不同,因为当我打开打字文件时,打字文件中存在智能感知错误。例如,我已经使用 npm 为 React(v. ^15.4.2) 安装了 Typings(v. ^15.0.21)。当我打开已安装的 index.d.ts 文件时,我收到许多错误:

// Type definitions for React v15.0
// Project: http://facebook.github.io/react/
// Definitions by: ...
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2

export = React;
export as namespace React;
Run Code Online (Sandbox Code Playgroud)

例如,在前两行中,我得到:

  • 除非提供了“--module”标志,否则无法编译模块...(整个第一行)

  • 预期的声明或声明。(第二行,在出口下)

  • 找不到名称“as”。(作为下)
  • ';' 预期的。(在命名空间下)

你明白了,这些将继续通过文件。我尝试了以下方法来解决问题:

  • 切换到使用 tsconfig 文件而不是 VS 打字稿工具。
  • 让 3 个同事在他们的电脑上试用(两个智能感知工作,第三个遇到了同样的问题)
  • 通过删除 .suo 文件清除智能感知缓存
  • 更新 TypeScript 工具和 Visual Studio。当我开始时,我在 VS2015 Update 1 上运行了一个非常旧版本的 TypeScript。我现在在 VS2015 Update 3 上使用 TypeScript 2.2.2。我已经从开发人员命令提示符和包管理器控制台验证了 TypeScript 的版本。
  • 手动添加///<reference />指向打字文件的标签。这样做成功地解析了 tsx html 元素,例如类型的<div>标签,JSX.IntrinsicElements但 React 模块仍然无法解析,可能是因为上面列出的错误。
  • 使用typerootstsconfig 中的元素直接指向 @types 文件夹。从那以后,我在一位同事的推荐下删除了它,这是两个智能感知工作的人之一。
  • 编辑 .csproj 文件 TypeScript 部分。我按照此处的建议将 TypeScript 工具版本更改为 2.2,并将模块解析选项更改为 Node、node 和 NodeJs:https : //github.com/Microsoft/TypeScript/issues/7568

这是我的 tsconfig.json 文件:

{
    "compileOnSave": true,
    "compilerOptions": {
        "sourceMap": true,
        "noImplicitAny": false,
         "module": "commonjs",
         "target": "es5",
         "jsx": "react"
    },
    "exclude": [ "./__Redesign/node_modules", "./__Redesign/jspm_packages" ],
    "include": [
        "./__Redesign/node_modules/@types",
        "__Redesign/app/**/*.ts",
        "__Redesign/app/**/*.tsx"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的 tsconfig 位于站点根目录中,该package.json文件位于与该文件夹__Redesign一起调用的node_modules文件夹中。这就是为什么我认为我可能需要将编译器明确地指向 tsconfig 中的类型。

在这一点上,我已经没有线索可以追捕了,任何新想法都值得赞赏。谢谢。

Sco*_*w18 2

经过更多实验后,我尝试对之前下载的 TypeScript 2.2.2 安装程序进行修复,这解决了问题。我不确定它做了什么来解决这个问题,但至少它有效。