[英]Using destructuring and renaming with import
我目前正在使用node-slack-sdk
为Slack
构建一个机器人。 在他们的示例中,他们得到以下行:
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_EVENTS
的CLIENT_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.