Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 无法实例化类的新对象_Typescript_Class_Object_Constructor - Fatal编程技术网

Typescript 无法实例化类的新对象

Typescript 无法实例化类的新对象,typescript,class,object,constructor,Typescript,Class,Object,Constructor,我在TypeScript中的代码有问题 import Conf = require('conf'); const config = new Conf(); 问题:表达式不可构造,导入的模块没有构造签名 这很奇怪,因为模块有一个名为“Conf”的类的默认导出,其中有一个名为“constructor”的方法 尝试的解决方案 我试着用推理来代替下面的内容 const config = Conf; config.constructor(); 我想问题可能在于'Conf'导出类本身,我需要将该类分配给

我在TypeScript中的代码有问题

import Conf = require('conf');
const config = new Conf();
问题:表达式不可构造,导入的模块没有构造签名

这很奇怪,因为模块有一个名为“Conf”的类的默认导出,其中有一个名为“constructor”的方法

尝试的解决方案 我试着用推理来代替下面的内容

const config = Conf;
config.constructor();
我想问题可能在于'Conf'导出类本身,我需要将该类分配给一个变量,然后像上面那样直接调用它的方法,但这对我来说似乎有点奇怪

为什么典型的“新”语法在这里不起作用

来源 供参考的包装:

编辑1:

conf包给出了如下示例:

const Conf = require('conf');

const config = new Conf();
请注意,在typescript中,commonjs中应该使用以下导入语法,因此我使用它:

import Conf = require('conf');
Src:

我不认为导入语法是这里的问题

编辑2

这是一个导入语法问题lol。多亏了下面的Alex。

您想要这个:

import Conf from 'conf'
const config = new Conf()
import foo=require('foo')语法有点特殊。从您链接的文档中:

它们还支持将导出对象替换为自定义的单个对象默认导出用于替代此行为;但是,这两种方法不兼容。TypeScript支持export=对传统的CommonJS和AMD工作流进行建模

import foo=require('foo')
合适时,它会说:

使用export=导出模块时,必须使用TypeScript特定的import module=require(“模块”)来导入模块

但如果你看看,你会发现:

export default Conf;
这是一个非常标准、非常正常的typescript默认导出。在typescript中导入的方式几乎总是:

import Conf from 'conf'

提供的代码示例与您的代码示例不同。
const Conf=require('Conf');const config=new Conf()是的,他们的版本在typescript中不起作用,我得到上面的错误。在typescript中导入语法有点不同。我不认为这是我所看到的问题,因为我仍然可以从模块中访问方法。如果我把第二个代码段做得很好,您的两个代码示例都与它们提供的不匹配。您确定使用的代码示例与编写的完全相同吗?第一个代码段中唯一的区别是导入语法。这不是问题所在,因为如果我使用第二种方法,我可以访问模块中的方法。由于commonjs/es6编译问题(它会抛出错误),我无法使用typescript中的确切语法导入。您已经修复了它!这是一个导入问题lol我对何时何地使用正确的导入语法感到困惑。如果你看到下面的导出“module.exports=Conf;module.exports.default=Conf;”它支持commonjs导入语法,那么理论上我上面的一个应该仍然有效?我想是的。但是只要始终使用
import Foo from'Foo'
import{SomethingInFoo}from'Foo'
,除非这不起作用。这是你99.99%的时候想要的。只有在失败的情况下,您才应该开始探索其他导入方法。我已经做了很多年的打字脚本,从来没有在同一行中一起使用过
import/require
。事实上,一开始我确信这是一个语法错误。真奇怪。我不得不将该导入/需要一个用于另一个pkg,因为其他任何东西都不起作用。这是否意味着模块加载异步?是否有一种方法“要求”它们同步加载?异步加载模块的方法现在和将来都会在捆绑包中使用。只在需要时加载某些页面非常好。但绝大多数模块都应该同步加载。