现在我尝试在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.default 中的 [功能:Telegraf] ?
注意
你可能会问"他为什么要访问这个特殊属性?" 。这是因为我在TS中模拟了以下Node.js:
const Telegraf = require('telegraf');
const bot = new Telegraf(process.env.BOT_TOKEN);
有关Telegraf的更多信息:http://telegraf.js.org/#/
答案 0 :(得分:0)
非常奇怪,显示[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!