繁体   English   中英

如何访问JS对象中的无名函数?

[英]How to access a nameless function in a JS Object?

现在,当尝试在TypeScript中为其创建类型时,Node.js包(Telegraf,一个机器人框架)遇到了一个小问题。 程序包本身具有以下导出:

module.exports = Object.assign(Telegraf, {
    Composer,
    Extra,
    Markup,
    Router,
    Telegram,
    session
})

TS导入:

import * as Telegraf from 'telegraf';

但是,当尝试访问它时,我将以下对象作为Telegraf

{ Composer: [Function: Composer],
  Extra: { [Function: Extra] Markup: [Function: Markup] },
  Markup: [Function: Markup],
  Router: [Function: Router],
  Telegram: [Function: Telegram],
  session: [Function],
  default:
  { [Function: Telegraf]
     Composer: [Function: Composer],
     Extra: { [Function: Extra] Markup: [Function: Markup] },
     Markup: [Function: Markup],
     Router: [Function: Router],
     Telegram: [Function: Telegram],
     session: [Function] } }

我的疑问是:我怎样才能访问[功能:Telegraf在 Telegraf.default?

注意

您可能会问: “为什么他要访问这个特殊的属性?” 这是因为我必须在TS中模拟以下Node.js:

const Telegraf = require('telegraf');

const bot = new Telegraf(process.env.BOT_TOKEN);

有关Telegraf的更多信息,请访问: http : //telegraf.js.org/#/

非常奇怪的是[Function: Telegraf]的显示没有键/名称,因为这是无效的对象。

但是,假设default对象有效且仅具有该功能以及这些键['Extra', 'Markup', 'Router', 'Telegram', 'session']可以选择过滤这些键并执行与过滤键:

let key = Object.keys(Telegraf.default)
                .filter(k => !['Extra', 'Markup', 'Router', 'Telegram', 'session'].includes(k));

Telegraf.default[key.pop()]() // <-- Execute the function!

暂无
暂无

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

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