我正在使用typescript
和angular 1.5
,并且有一个有趣的情况。
在angular.d.ts
中,来自 DefinitelyTyped ,angular
实际上声明了一个名为 ng 的别名,因此会被使用像这样;
class SomeController {
constructor($scope: ng.IScope) { }
}
现在,我想扩展IScope
并为类型安全添加我自己的属性。不过,我对如何解决这个问题感到有些困惑,因为以下内容不起作用......
declare module ng {
interface IRegisterScope extends ng.IScope {
// ...
}
}
我真的很困惑甚至开始解决这个问题。
我使用 es5 标准导入角度,我的模块根据我的tsconfig.json
文件编译为 amd 。
所以这就是我的档案,到目前为止......
import "jquery";
import "angular";
class RegisterController {
constructor($scope: ng.IScope) {
// ...
}
}
export = RegisterController;
我希望扩展 ng 以添加新界面IRegisterScope
。
答案 0 :(得分:0)
您应该只需将以下内容放在src: 'views/**/**/*.html',
课程上方:
RegisterController
然后在interface IRegisterScope extends ng.IScope {
}
的构造函数中:
RegisterController
这样您就不会导出新的示波器界面来污染其他文件,仍然可以在此文件中获得IntelliSense的好处。
如果您希望它在其他文件中可用,只需将其放在另一个文件中,并在您想要使用的文件中引用它。
constructor($scope: IRegisterScope) {
}
<强>更新强>
如果您希望///<reference path="some_path_to_other_file/scopes.d.ts" />
下的IRegisterScope
可用,则可以执行此操作。
scopes.d.ts:
ng
app.ts:
declare module angular {
interface IRegisterScope extends ng.IScope {
someProperty: string;
}
}