我在Typescript中编写了以下angularjs工厂示例,但是收到了三个TSLint错误:
第3行:预期的呼叫签名:'FirebaseFactory'具有typedef
第8行:预期的呼号:'AuthFactory'有一个typedef
第9行:预期的呼叫签名具有typedef
虽然我知道它仍然是有效的Typescript,但我更愿意确保维持TS包含的所有类型检查优势。
module app.services {
export function FirebaseFactory () {
return new Firebase('https://sample.firebaseio.com');
}
angular.module('app.services').factory('firebaseFactory', FirebaseFactory);
export function AuthFactory (DB: Firebase, $firebaseAuth: AngularFireAuthService) {
return function () {
return $firebaseAuth(DB);
};
}
AuthFactory.$inject = ['firebaseFactory', '$firebaseAuth'];
angular.module('app.services').factory('authFactory', AuthFactory);
}
有没有办法创建接口,以便我只导出接口而不是函数?之前我已经使用其他以类实现的服务完成了这项工作。
答案 0 :(得分:0)
https://github.com/palantir/tslint#supported-rules说:
“call-signature”检查函数的返回类型
使用此规则(我个人更喜欢禁用它),您应该声明类型:
export function AuthFactory (...): () => AngularFireAuth
无论是否明确声明类型,甚至声明接口:
export var AuthFactory: { (): AngularFireAuth; } = function (...)
外观你的模块看起来一样。