gpt4 book ai didi

typescript - 将整个模块导出为构造函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:07 26 4
gpt4 key购买 nike

假设我有一个 nodejs 模块,当我需要它时,它会向我返回一个构造函数。类似于以下内容:

var Mod = require("modulename");
var mod = new Mod();
mod.method();

我想写一个 .d.ts 声明文件,可以像这样导入和使用:

import * as Mod from "mod";
let mod = new Mod();
mod.method();

我已经尝试阅读 Typescript 网站上的所有文档,但老实说,它一清二楚,我觉得我已经尝试了我的 .d 中存在的类、接口(interface)、命名空间、模块和导出的所有组合。 ts 文件。我想知道以上是否可以实现。有人可以提供帮助吗?

最佳答案

而不是写这个

import * as Mod from "mod";
let mod = new Mod();

你应该这样写

import Mod = require("mod");
let mod = new Mod();

为什么?

import * as Mod from "mod";

这是 ES6 模块导入语法。它表示您正在将 "mod" 模块对象导入本地名称 Mod。 ES6 模块仅公开属性,不能作为函数或使用 new 调用。

我再说一遍,因为人们通常不相信我或选择忽略它:ES6 模块仅公开属性,不能作为函数或使用 new 调用。

如果您开始将代码编译为 ES6 运行时(而不是使用 CJS/AMD 降级为 ES5 模块),您的代码将停止工作。不过,ES6 模块中没有 require 函数,因此“旧式”import Mod = require("mod"); 仍然可以。

关于typescript - 将整个模块导出为构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39133620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com