繁体   English   中英

通过导入使用解构和重命名

[英]Using destructuring and renaming with import

我目前正在使用node-slack-sdkSlack构建一个机器人。 在他们的示例中,他们得到以下行:

var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;

CLIENT_EVENTS然后按如下方式使用:

rtm.on(CLIENT_EVENTS.RTM.AUTHENTICATED, function handleRTMAuthenticated() {
  console.log('RTM client authenticated!');
});

我更改了require ,以便使用解构来直接获取我重命名为RTM_CLIENT_EVENTSCLIENT_EVENTS.RTM对象。

const {
  CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS },
} = require('@slack/client');

现在,我想将require更改为import

import {
  CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS },
}  from '@slack/client';

但我收到以下错误:

ES2015 命名导入不会解构。 导入后使用另一个语句进行解构

知道为什么他们不解构吗?

import具有严格的语法,仅模仿浅层解构语法,但应该进行静态分析。 export也是如此,它模仿对象文字语法。

正如错误所暗示的那样,正确的方法是

import { CLIENT_EVENTS }  from '@slack/client';

const { RTM: RTM_CLIENT_EVENTS } = CLIENT_EVENTS;

javascript 中的import语句本身不支持解构语法。 但是您可以通过以下方式重命名导入:

import {RTM_CLIENT_EVENTS as RTM} from '@slack/client'

这里RTM_CLIENT_EVENTS将被导入并使用as关键字重命名为RTM

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM