[英]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.