Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 我应该用打字机打字吗_Typescript - Fatal编程技术网

Typescript 我应该用打字机打字吗

Typescript 我应该用打字机打字吗,typescript,Typescript,例如,我有一个函数: 函数和(a:number,b:number){返回a+b} 在上述函数中,我是否应注释函数的返回类型为number?因为我认为开发人员和编译器都可以推断函数的结果必须是numbertype 同样像httpClient.get方法中的角度返回Observable类型,它已经在签名中定义,我应该在代理消费者函数中显式声明它吗 函数getPosts(){ 返回此.httpClient.get(); } 所以我的问题是我应该什么都打吗?如果没有,我应该在什么时候键入它。是的,您

例如,我有一个函数:

函数和(a:number,b:number){返回a+b}
在上述函数中,我是否应注释函数的返回类型为
number
?因为我认为开发人员和编译器都可以推断函数的结果必须是
number
type

同样像
httpClient.get
方法中的角度返回
Observable
类型,它已经在签名中定义,我应该在代理消费者函数中显式声明它吗

函数getPosts(){ 返回此.httpClient.get(); }
所以我的问题是我应该什么都打吗?如果没有,我应该在什么时候键入它。

是的,您应该养成明确设置所有类型的习惯,这样可以防止出现意外值,也有利于可读性

在既有类型推断又有显式清单类型注释的编程语言中,您可以将显式清单类型注释视为会计中复式记账的等价物:当您把所有事情都做好时,应该永远不需要它,因为推断类型和显式类型总是相同的,但当你犯错误时,它会帮助你抓住错误

一个好的经验法则是:

每个公共接口都应该被显式地注释

是否注释私有接口是您的选择

就我个人而言,我有一个稍微放松的版本:

每个公共接口都应该显式注释,除非类型从名称和实现上都非常明显

所以,对于像

将函数导出到字符串(){返回“虚拟用户”;}
我觉得省略类型注释是可以的,但其他人不同意

在第一个示例中,省略类型注释可能没什么问题。虽然在一种语言中,加法和字符串串联都会重载
+
,但当您打算返回数字时,很容易意外地编写返回字符串的代码,因此防范这种情况可能是有意义的

在第二个示例中,我觉得它应该有一个类型注释。记住我的个人规则:

每个公共接口都应该显式注释,除非类型从名称和实现上都非常明显


我觉得一个名为
getPosts
的函数实际上并没有得到posts,而是得到了一个
可观察的
posts,这一事实还不够明显。

当然你不应该,因为TS很聪明。在某些情况下,他自己决定类型。在简单的情况下,您无法确定类型。但是如果您的函数接受并返回复杂类型,那么最好定义它们。首先,对于您的同事来说,类型声明的错误越接近:修复它就越容易。如果重构后意外更改了
return
表达式,使其返回不同的类型,则类型检查错误将在第一个调用方上触发,该调用方的期望值已被打破(如果有)。因此我的做法是:总是显式地键入所有函数。