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
表达式,使其返回不同的类型,则类型检查错误将在第一个调用方上触发,该调用方的期望值已被打破(如果有)。因此我的做法是:总是显式地键入所有函数。