Era*_*hel 2 javascript ecmascript-6
我正在构建一个Slack使用该机器人的机器人node-slack-sdk.在他们的例子中,他们得到以下行:
var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
Run Code Online (Sandbox Code Playgroud)
该CLIENT_EVENTS则使用如下:
rtm.on(CLIENT_EVENTS.RTM.AUTHENTICATED, function handleRTMAuthenticated() {
console.log('RTM client authenticated!');
});
Run Code Online (Sandbox Code Playgroud)
我已经改变了require以便使用解构来直接获取CLIENT_EVENTS.RTM我重命名的对象RTM_CLIENT_EVENTS.
const {
CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS },
} = require('@slack/client');
Run Code Online (Sandbox Code Playgroud)
现在,我想改变require到import:
import {
CLIENT_EVENTS: { RTM: RTM_CLIENT_EVENTS },
} from '@slack/client';
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
ES2015名为进口不进行破坏.导入后使用另一个语句进行解构
知道他们为什么不去构造?
小智 13
javascript 中的语句import本身不支持解构语法。但您可以通过以下方式重命名导入:
import {RTM_CLIENT_EVENTS as RTM} from '@slack/client'
Run Code Online (Sandbox Code Playgroud)
这里RTM_CLIENT_EVENTS属性将被导入并重命名为RTM使用as关键字。
import具有严格的语法,只能模仿浅层解构语法,但应该进行静态分析.export它也是如此,它模仿了对象文字语法.
正如错误所暗示的那样,正确的方法是
import { CLIENT_EVENTS } from '@slack/client';
const { RTM: RTM_CLIENT_EVENTS } = CLIENT_EVENTS;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1681 次 |
| 最近记录: |