Typescript声明变量类型重复

时间:2017-01-25 14:43:23

标签: variables typescript types declaration typescript2.0

我正在声明一个typescript变量,如下所示:

let foo: any = this.someFunc(someArg);

someFunc是一个函数,其返回类型与foo的类型匹配:

public someFunc(arg: any): any {
    return {};
}

返回类型为“any”,但也可以是任何其他类型。

鉴于foo声明可能已经表达而未指定类型:

let foo = this.someFunc(someArg);

第一个声明示例是否应被视为错误或错误?

我目前在拉动请求中被告知这是错误的,因为它构成了重复。

在我看来,两种用法都很好,第一种是更具可读性,并强制执行分配给声明变量的返​​回类型。

在打字稿代码示例中,我看到了两种符号。

2 个答案:

答案 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