也许我真的错过了一些东西,但我无法摆脱所有课程的语法问题。
以下是一个例子:
class Foo {
bar: (x: string, y: number) => string = (xx: string, yy: number) : string => {
// do some stuff...
};
}
由于我使用tslint强制执行类型声明,所以我的所有方法都是这样编写的。这太糟糕了。必须复制粘贴参数部分,重命名类型声明和lambda声明之间的args名称是太麻烦了。
那么:有没有更好的方法来组合类型签名和lambda声明,而不是所有的膝盖抽搐?我真诚地希望我错过了一些东西,并希望这不是“按设计”! :)
答案 0 :(得分:3)
您需要配置TSLint以强制执行类型,但忽略函数的类型:
typedef强制存在类型定义。规则选项:
“call-signature”检查函数的返回类型
“parameter”检查函数参数的类型说明符
“property-declaration”检查接口属性的返回类型
“variable-declaration”检查变量声明
“member-variable-declaration”检查成员变量声明
答案 1 :(得分:0)
编辑:
如果你的目标是ES5,你也可以这样做:
site/about
或者:
var bar = (x: string, y: number) : string => {
// do some stuff...
};
class Foo {
get bar () { return bar; }
}
var test = (new Foo).bar('hello', 3);
这样就保留了方法的上下文,它也存在于原型上。还没有必要复制参数类型,TSC会推断它们。