Арт*_*иев 6 javascript prompt input node.js typescript
我在我的 Node 项目中使用prompt-sync 模块。
const prompt = require('prompt-sync')();
const result = prompt(message);
Run Code Online (Sandbox Code Playgroud)
但为了保持 TypeScript 代码的一致性,我需要import使用 require. 所以我安装了包的类型。
npm i @types/prompt-sync
Run Code Online (Sandbox Code Playgroud)
我尝试像这样使用它
import * as promptSync from 'prompt-sync';
...
const prompt = promptSync();
const result = prompt(message);
Run Code Online (Sandbox Code Playgroud)
但是出现了错误
Error:(24, 20) TS2349: This expression is not callable.
Type '{ default: (config?: Config | undefined) => Prompt; }' has no call signatures.
Run Code Online (Sandbox Code Playgroud)
那么我该如何使用提示同步呢import?
Alu*_*dad 13
引发该错误的原因是您无法调用名称空间导入 ( * as ns)。此限制符合 ECMAScript 规范,该规范要求模块名称空间对象(例如上述语法创建的对象)不能具有[[Call]]或[[Construct]]签名。
当尝试从 ES 模块使用 CommonJS 模块时,这会导致不匹配,因为许多前者将单个函数或构造函数导出为模块本身(即module.exports = function () {})。
然而,有指定和约定的互操作功能,它通过合成default包含 值的 CommonJS 模块的导出来工作module.exports。
您可以而且应该利用此互操作工具。
首先,确保在您的under中"esModuleInterop"指定了值。truetsconfig.json"compilerOptions"
其次,重写代码以从prompt-sync模块导入合成默认值
import promptSync from 'prompt-sync';
const prompt = promptSync();
const result = prompt(message);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8938 次 |
| 最近记录: |