[英]Typescript declare variable type repetition
我声明一个打字稿变量如下:
let foo: any = this.someFunc(someArg);
someFunc是一个函数,其返回类型与foo的类型匹配:
public someFunc(arg: any): any {
return {};
}
返回类型是“ any”,但也可以是其他任何类型。
鉴于可能已经声明了foo声明而未指定类型:
let foo = this.someFunc(someArg);
应该将第一个声明示例视为错误还是错误?
我目前在请求请求中被告知这是错误的,因为它构成重复。
在我看来,这两种用法都很好,第一种用法更具可读性,并且强制执行了返回类型,该返回类型分配给了声明的变量。
在打字稿代码示例中,我看到了两种表示法。
这是您的团队必须做出的风格选择。
是的,它是重复的,因为它可以由编译器推断出来。 但是,将它们编写起来使开发人员更容易知道,而不必单击许多功能(因为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
初始化字段/变量时,您不需要将类型设置为某些超级类/接口。
编译器根据函数的返回类型来推断foo
的类型,这就是为什么您无需显式指定它的原因。
指定它没有错,也不是错误,只是更加冗长。
有些人喜欢这种冗长的方式,因为它更具可读性,而有些人则认为它是多余的。
您将需要弄清楚您团队中的惯例,并以此为基础开展工作。
在某些情况下,使用它更有意义,例如:
interface A {
x: number;
}
interface B extends A {
y: number;
}
function fn(): B { return null }
let a: A = fn();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.