Javascript 分解函数参数的TS语法

Javascript 分解函数参数的TS语法,javascript,typescript,Javascript,Typescript,为什么在处理TS时,我必须为JS函数的传入参数指定一个类型来指定两个不同的文本 例如: export default function createGravatarImageUrl({ email }: { email: string }) { ... } 这里的参数绑定和类型做两件完全不同的事情: 参数binding{email}分解对象,将email变量绑定到该参数中的相应属性 类型可以是{email:string}的任何子类型,并将整个参数的类型限制为可能更具体的类型 您没有两次指定

为什么在处理TS时,我必须为JS函数的传入参数指定一个类型来指定两个不同的文本

例如:

export default function createGravatarImageUrl({ email }: { email: string }) {
  ...
}

这里的参数绑定和类型做两件完全不同的事情:

  • 参数binding
    {email}
    分解对象,将
    email
    变量绑定到该参数中的相应属性
  • 类型可以是
    {email:string}
    的任何子类型,并将整个参数的类型限制为可能更具体的类型

  • 您没有两次指定参数,而是分别指定了解构操作和整个参数的类型。不幸的是,如果您想同时执行这两项操作并将类型指定为您已分解的类型,则没有快捷方式,但这是一个非常狭窄的情况。

    那么编译器知道类型吗?我不明白这个问题。你的问题是什么?“为什么?”似乎是基于观点,或者需要语言设计师作为权威来源。你似乎已经知道“怎么做?”,我想op已经明白了?不过我不确定。