我使用创建了一个新项目吞咽角Yeoman 生成器,语言设置为 TypeScript。然后运行Gulp构建过程并在网络浏览器中打开页面,所有这些都正常运行,没有任何更大的问题。我只需要更换ref: "master"
in the tsd.json
with ref: "1.4.1"
使构建工作。基本上我执行了以下命令:
yo gulp-angular
vim tsd.json
gulp
gulp serve
code .
之后我打开了该项目视觉工作室代码.
现在,Visual Studio Code 抱怨说,它“找不到命名空间‘ng’”对于每次出现的情况AngularJS使用数据类型。它还抱怨MomentJS以及中定义的其他类型*.d.ts
files.
该项目的tsd.json
看起来像这样:
{
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "1.4.1",
"path": ".tmp/typings",
"bundle": ".tmp/typings/tsd.d.ts"
}
The .tmp/typings
文件夹包含以下文件:
angular-ui-router/angular-ui-router.d.ts
angularjs/angular-animate.d.ts
angularjs/angular-cookies.d.ts
angularjs/angular-mocks.d.ts
angularjs/angular-resource.d.ts
angularjs/angular-sanitize.d.ts
angularjs/angular.d.ts
jquery/jquery.d.ts
moment/moment-node.d.ts
moment/moment.d.ts
toastr/toastr.d.ts
tsd.d.ts
举一个 Visual Studio Code 抱怨的源文件之一的示例,这里是navbar.directive.ts
file:
module editorTs {
'use strict';
/** @ngInject */
export function acmeNavbar(): ng.IDirective {
return {
restrict: 'E',
scope: {
creationDate: '='
},
templateUrl: 'app/components/navbar/navbar.html',
controller: NavbarController,
controllerAs: 'vm',
bindToController: true
};
}
/** @ngInject */
class NavbarController {
public relativeDate: string;
constructor(moment: moment.MomentStatic) {
this.relativeDate = moment(1444135396045).fromNow();
}
}
}
在此文件中,Visual Studio Code 抱怨ng.IDirective
键入它“找不到命名空间‘ng’”它正在抱怨moment.MomentStatic
键入它“找不到命名空间‘时刻’”.
edit:
通过将以下内容添加到顶部来显式引用类型定义文件navbar.directive.ts
消除了问题:
/// <reference path="../../../../.tmp/typings/angularjs/angular.d.ts"/>
/// <reference path="../../../../.tmp/typings/moment/moment.d.ts"/>
但这些文件已经被引用.tmp/tsd.d.ts
,其中包含以下内容:
/// <reference path="angular-ui-router/angular-ui-router.d.ts" />
/// <reference path="angularjs/angular-animate.d.ts" />
/// <reference path="angularjs/angular-cookies.d.ts" />
/// <reference path="angularjs/angular-mocks.d.ts" />
/// <reference path="angularjs/angular-resource.d.ts" />
/// <reference path="angularjs/angular-sanitize.d.ts" />
/// <reference path="angularjs/angular.d.ts" />
/// <reference path="jquery/jquery.d.ts" />
/// <reference path="moment/moment-node.d.ts" />
/// <reference path="moment/moment.d.ts" />
/// <reference path="toastr/toastr.d.ts" />
那么应该不需要显式引用这些文件?