2016-09-23 31 views
14

我尝试从我的web项目(Visual Studio 2015社区)中删除类型并通过新的NPM @types(typescript 2.0.3)安装d.ts文件)中的package.json:使用Visual Studio&Typescript 2.0.3从类型转换到@types

"dependencies": { 
    "@types/angular": "^1.5.8", 
    "@types/angular-cookies": "^1.4.2", 
    "@types/angular-local-storage": "^0.1.33", 
    "@types/angular-material": "^1.1.37", 
    "@types/angular-translate": "^2.4.33", 
    "@types/lodash": "^4.14.36" 
    } 

Visual Studio的智能感知很好地与分型,因为我包含在我的VS项目文件夹分型工作过。 NPM将类型安装到node_modules/@types文件夹中。现在,这是我的问题。我真的不想在VS项目中包含node_modules的任何内容。 node_modules文件夹应该可以被删除,然后由npm再次重新创建。 Visual Studio无法识别安装的类型,而未将它们包含在项目中! 我想我可以在其中创建一个带有///引用标签的文件,但是当安装/删除类型时,我将不得不手动维护此文件。

是否有任何推荐的方法使VS智能感知工作?

回答

12

在开关切换到2.0并使用新的@types约定后,我一直在面对同样的问题。

我发现寻找到规范对于这里的tsconfig.json在此之后有用的属性:compilerOptions的http://json.schemastore.org/tsconfig

“typeRoots”属性。

我无法获得文件或包含数组来拉我的类型,但这似乎已经为我做了伎俩。

我tsconfig.json文件为例:

{ 
    "compileOnSave": true, 
    "compilerOptions": { 
    "outDir": "./dist/", 
    "sourceMap": true, 
    "noImplicitAny": false, 
    "module": "commonjs", 
    "target": "es5", 
    "jsx": "react", 
    "typeRoots": [ 
     "node_modules/@types" 
    ] 
    } 
} 

希望这可以帮助别人有同样的问题。

+0

这确实做了打字稿编译器的伎俩。但Visual Studio IntelliSence仍然抱怨丢失的类型。 –

+0

您是否通过“npm install -g typescript”在全球安装了打字稿? 我似乎没有intellisense的问题,必须有一些其他全球配置丢失。 除了全局安装的打字稿之外,你是否运行“npm install typings -g”? – Miek

+2

经过双重检查后,我意识到,当使用新的@types repo时,除非明确导入,否则Intellisense的模块将不可用。例如,对于lodash,我必须使用'import *'作为'lodash'的_; “我认为这是我原来的问题的答案。 –

2

安装VS 2015 Update 3,然后安装TypeScript 2.0.3工具。

+1

已经有更新3和TS 2.0.3工具。 –

1

下面是在Visual Studio 2015年(作为更新3)使用@types的例子...

首先,一定要有打字稿V2.0.3或更高版本。

然后,加分型如下:

"devDependencies": { 
    "typescript": "^2.0.3", 

    "@types/jquery": "*", 
    "@types/lodash": "^4.14.36" 
    } 

然后,在你的打字稿文件,只需添加以下...

/// <reference path="jquery.d.ts"/> 
/// <reference path="jquery.lodash.d.ts" /> 

为了查看是否有库类型是可用的,检查出Type Search,供电Definitely Typed

参考文献: