Variables Typescript声明变量类型重复
我声明了一个typescript变量,如下所示:Variables Typescript声明变量类型重复,variables,typescript,types,declaration,typescript2.0,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); 第一个声明示例应该被认为是错误的还是错误的 我
let foo: any = this.someFunc(someArg);
someFunc是一个返回类型与foo类型匹配的函数:
public someFunc(arg: any): any {
return {};
}
返回类型为“any”,但也可以是任何其他类型
考虑到可能在未指定类型的情况下表达了foo声明:
let foo = this.someFunc(someArg);
第一个声明示例应该被认为是错误的还是错误的
我目前在一个请求中被告知,这是错误的,因为它构成了重复
在我看来,这两种用法都很好,第一种更具可读性,并强制执行分配给声明变量的返回类型
在typescript代码示例中,我看到了这两种符号。这是您的团队必须做出的风格选择 是的,它是重复的,因为编译器可以推断它;但是,编写它们会更容易,让开发人员知道,而不必单击许多函数(因为someFunc可以从其他函数推断其类型) 此外,如果您犯了错误,编译器会告诉您,因此重复类型信息不会像复制实际代码那样糟糕
FWIW,我的团队已经决定键入所有内容,这样我们就不必在何时键入内容时不断拨打电话。唯一的例外是使用
new
初始化字段/变量时,您不需要将类型设置为某个超类/接口。编译器根据函数的返回类型推断foo
的类型,这就是您不需要显式指定它的原因
指定它没有错,也不是错误,只是更详细。有些人喜欢这种冗长的方式,因为它更具可读性,有些人认为它是多余的 你需要弄清楚你的团队中有哪些惯例,并以此为基础开展工作 但在某些情况下,使用它更有意义,例如:
interface A {
x: number;
}
interface B extends A {
y: number;
}
function fn(): B { return null }
let a: A = fn();
它不是必需的,因为您可以将
a
设置为B
,并且它将是相同的
interface A {
x: number;
}
interface B extends A {
y: number;
}
function fn(): B { return null }
let a: A = fn();