函数

为什么我不能在解构函数 function f({ x: number }) { /* ... */ } 中使用 x

我写下这单代码,但是得到了一个错误

function f({ x: number }) {
  // Error, x is not defined?
  console.log(x);
}

对于那些习惯于查看 TypeScript 类型字面量的人来说,解构语法是有悖常理的。语法 f({ x: number }) 声明了属性名从 x 转换为 number 名的解构。

让我们从发出的代码来收到启发:

function f(_a) {
  // Not really what we were going for
  var number = _a.x;
}

为了能让这段代码正确运行,你需要写下:

function f({ x }: { x: number }) {
  // OK
  console.log(x);
}

如果你想为所有属性提供一个初始变量,最合适的写法是:

function f({ x = 0 }) {
  // x: number
  console.log(x);
}

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""