微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何知道何时创建接口与直接在Typescript的函数签名中定义对象?

如何解决如何知道何时创建接口与直接在Typescript的函数签名中定义对象?

编写Typescript函数的标准方法是什么?例如,以下三个条件中的哪一个是理想的:

// 1
function myFunction (a: string) {}

// 2
function myFunction ({ a }: { a: string }) {}

// 3
interface IMyFunction {
  a: string
}

function myFunction (input: IMyFunction) {}

例如,如果有3个变量,答案是否会更改?

针对这些类型的问题是否有很好的参考文档?

解决方法

这些都不是理想的,也没有针对此类问题的文档,因为这完全取决于您自己决定。这就像在争论是否有必要在JavaScript的每一行末尾写分号:我没有写分号,但是很多人都写了,这没问题。

通常,最好使用简单的参数,当它很明显时,它们的用途是什么,就像Math.sqrt需要一个数字,而且很明显,原因和用途是什么。参数最有效的其他示例是:

function getUserById(id: number) { /* ... */ }
getUserById(12523)

function displayMessage(text: string) { /* ... */ }
displayMessage('Hello')

再一次,没有人禁止您使用对象和接口,只是在这些示例中,参数的含义很明显,而且没有很多。

查看此功能:

function getUserById(id: number,includeDescription: boolean) {}

在这种情况下,您可能想使用对象而不是简单的参数,因为如果我写getUserById(12345,true),则不清楚true的含义,除非您记得如何编写此函数或查看它是什么。定义。所以你可以这样写

function getUserById({ 
  id,includeDescription 
}: {
  id: number,includeDescription?: boolean
}) {}

这很好,除非您在其他地方使用此对象类型。如果这样做,那么您可能想改写一个接口或一个类型别名,这样您以后就不必重复代码了。我个人通常会写类型别名,因为当您在编辑器中将鼠标悬停在用接口声明的参数上时,它仅显示接口的名称,而使用类型别名则显示整个对象的定义,因此这样做更快

type GetUserByIdOptions = {
  id: number
  includeDescription?: boolean
}
function getUserById({ id,includeDescription }: GetUserByIdOptions) {}

通常,如果您有许多参数(如3个以上),则您将要使用对象,因为这些参数是什么样子更容易记住。另外,您不必记住他们的订单。但是,这完全取决于您,只要写对您和您感觉更好的内容即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。