在我的代码上运行tslint我收到此错误:
expected variableDeclarator: 'getCode' to have a typedef.
表示TypeScript文件:
export var getCode = function (param: string): string {
// ...
};
如何改善这一点,以便我不会看到tslint错误?
答案 0 :(得分:9)
您必须明确地向变量添加类型声明。
export var getCode : (param: string) => string = function (param: string): string {
//...
}
你说这看起来很不可思议。嗯,是的,匿名类型使TS代码看起来更糟,特别是当它们很大时。在这种情况下,您可以声明一个可调用的接口,如下所示:
export interface CodeGetter {
(param: string): string;
}
export var getCode: CodeGetter = function(param: string): string { ... }
您可以检查tslint是否允许您(我现在无法检查)在使用界面时删除函数定义中的类型声明
export interface CodeGetter {
(param: string): string;
}
export var getCode: CodeGetter = function(param) { ... }
答案 1 :(得分:2)
您的代码片段看起来很好。如果使该函数返回一个字符串,它将在tsc中编译而不会出现错误。你确定返回值是一个字符串吗?
这段摘录来自tslint repo:
typedef强制存在类型定义。规则选项:
"callSignature" checks return type of functions "indexSignature" checks index type specifier of indexers "parameter" checks type specifier of parameters "propertySignature" checks return types of interface properties "variableDeclarator" checks variable declarations "memberVariableDeclarator" checks member variable declarations
答案 2 :(得分:1)
为getCode添加typedef:
var getCode: (s: string) => string;
内联,它应该是这样的:
export var getCode: (s: string) => string = function (param) {
// ...
};