我正在声明一个typescript变量,如下所示:
let foo: any = this.someFunc(someArg);
someFunc是一个函数,其返回类型与foo的类型匹配:
public someFunc(arg: any): any {
return {};
}
返回类型为“any”,但也可以是任何其他类型。
鉴于foo声明可能已经表达而未指定类型:
let foo = this.someFunc(someArg);
第一个声明示例是否应被视为错误或错误?
我目前在拉动请求中被告知这是错误的,因为它构成了重复。
在我看来,两种用法都很好,第一种是更具可读性,并强制执行分配给声明变量的返回类型。
在打字稿代码示例中,我看到了两种符号。
答案 0 :(得分:1)
这是团队必须做出的风格选择。
是的,它是重复的,因为它可以由编译器推断;然而,可以更容易地将它们写入供开发人员知道而无需点击许多函数(因为someFunc可以从其他东西推断它的类型)。
// The compiler knows that a is a number, developers will have to look
// inside someFunc and otherFunc to know that
const a = someFunc();
function someFunc() {
return otherFunc();
}
function otherFunc(){
return 1;
}
另外,如果你犯了一个错误,编译器会告诉你,类型信息的重复没有复制实际代码那么糟糕。
FWIW,我的团队决定输入所有内容,这样我们就不必一直打电话给什么时候打字。唯一的例外是使用new
初始化字段/变量时,您不需要该类型为某些超类/接口。
答案 1 :(得分:1)
编译器根据函数的返回类型推断class CustomTask extends DefaultTask {
@Input @Optional
Closure preconfig
// ...
}
的类型,这就是您不需要明确指定它的原因。
没有错,指定它也不是错误,它只是更冗长 有些人喜欢这种冗长的方式,因为它更具可读性,有些人认为这是多余的。
您需要弄清楚您的团队中的惯例,并根据这些惯例进行工作。
在某些情况下,使用它更有意义,例如:
foo