typescript 对象中的哪种类型的值作为函数的参数,为什么没有编译错误?

p8h8hvxi  于 2022-12-14  发布在  TypeScript
关注(0)|答案(3)|浏览(130)

我已经得到了下一串代码。

const func: ( newState: { newState: number }) => void = ({ newState: newState }) => {
    console.log(newState);
}

对我来说,特别有趣的是({ newState: newState })它是如何工作的?为什么我可以在这种情况下编写newState: newState,并且没有编译错误?

yftpprvb

yftpprvb1#

const函数:(标签参数:{新状态:数字})=〉无效=({新状态:如果您有任何问题,请与我们联系。}
函数({新状态:12});这是因为第一个newState是一个标签,放在给函数的参数上-〉我在示例中将其重命名为labeledParameter
所述对象
{ newState:newState }是具有属性newState的对象,其值为数字
调用您应该使用的函数
函数({新状态:第12条);

slmsl1lt

slmsl1lt2#

const func: ( labeledParameter: { newState: number }) => void = ({ newState: test }) => {
    console.log(test);
}

func({newState: 12});

这是因为第一个newState是一个标签,放在给予函数的参数上-〉我在示例中将其重命名为labeledParameter
所述对象

{ newState: newState }

是一个具有newState属性的对象,其值为一个数字
调用您应该使用的函数

func({newState: 12});
rvpgvaaj

rvpgvaaj3#

让我们通过分离代码片段中的typescript和javascript部分来理解。

类型脚本部分

( newState: { newState: number }) => void

上面的部分定义了函数的type,它声明函数接受一个参数(可以命名为任何名称,这里命名为newState),该参数是一个带有键newState的对象,其类型为numbervoid返回类型声明函数不返回任何内容。

JavaScript部分

({ newState: newState }) => {
  console.log(newState);
}

上面的部分是函数定义,其中参数是destructed,并且newState键被别名为newState,这是冗余的,但可以工作。
上述代码片段的更详细版本如下:

type Func = (newState: { newState: number }) => void

const func: Func = (arg) => {
    const { newState: renamed } = arg;
    console.log(renamed);
}

相关问题