对于使用 declare 定义的属性,如何从 TS 输出文件中删除 require?
How can I remove require from TS output file for properties defined with declare?
我有包含外部 JS 库声明的文件:
events.ts
export declare EVENT_PLAYER_COMMAND_TEXT: string
... more other events
我在 index.js 中导入此事件:
import { EVENT_PLAYER_COMMAND_TEXT } from '../types/default/events';
on(EVENT_PLAYER_COMMAND_TEXT, () => {})
在输出 JS 文件中我得到:
var event_1 = require('../types/default/events')
on(event_1.EVENT_PLAYER_COMMAND_TEXT, () => {})
但是,库希望我使用 EVENT_PLAYER_COMMAND_TEXT 而没有 event_1 或任何其他变量。所以在JS中的输出结果一定是:
on(EVENT_PLAYER_COMMAND_TEXT, () => {})
我怎样才能做到这一点?
谢谢。
您可以使用 the module
setting in tsconfig.
保留 import/export 个语句
任何 es20XX
或 esnext
的值都应保留导入导出语句。
但此设置是为了确保 import/export 语法在您的目标环境中有效。因此,根据您 运行 此代码的位置,此更改可能会完全破坏导入。
就是说,如果 import
被转译为 require
在您的目标环境中完全可以工作,那么 typescript 转译的方式应该可以正常工作。它在功能上应该是相同的。
我有包含外部 JS 库声明的文件: events.ts
export declare EVENT_PLAYER_COMMAND_TEXT: string
... more other events
我在 index.js 中导入此事件:
import { EVENT_PLAYER_COMMAND_TEXT } from '../types/default/events';
on(EVENT_PLAYER_COMMAND_TEXT, () => {})
在输出 JS 文件中我得到:
var event_1 = require('../types/default/events')
on(event_1.EVENT_PLAYER_COMMAND_TEXT, () => {})
但是,库希望我使用 EVENT_PLAYER_COMMAND_TEXT 而没有 event_1 或任何其他变量。所以在JS中的输出结果一定是:
on(EVENT_PLAYER_COMMAND_TEXT, () => {})
我怎样才能做到这一点?
谢谢。
您可以使用 the module
setting in tsconfig.
任何 es20XX
或 esnext
的值都应保留导入导出语句。
但此设置是为了确保 import/export 语法在您的目标环境中有效。因此,根据您 运行 此代码的位置,此更改可能会完全破坏导入。
就是说,如果 import
被转译为 require
在您的目标环境中完全可以工作,那么 typescript 转译的方式应该可以正常工作。它在功能上应该是相同的。