Javascript d、 ts文件导出模块

Javascript d、 ts文件导出模块,javascript,typescript,webpack,Javascript,Typescript,Webpack,我从Typescript开始,尝试创建一个新模块,但遇到了一些问题 我想将一个js文件导入index.ts,因此我知道我必须创建一个d.ts文件,以便创建和解释typescript的函数。在我的index.ts中,我输入了以下内容: 从“/Toto”导入Toto; 这是我的d.ts文件: 声明模块“Toto”{ 函数myfunction(回调:函数); 导出默认myfunction; } 但在我的d.ts文件中,我有以下错误: TS1128:需要声明或语句 我不明白为什么,因为我的考试很容易

我从Typescript开始,尝试创建一个新模块,但遇到了一些问题

我想将一个js文件导入index.ts,因此我知道我必须创建一个d.ts文件,以便创建和解释typescript的函数。在我的index.ts中,我输入了以下内容:

从“/Toto”导入Toto;
这是我的d.ts文件:

声明模块“Toto”{
函数myfunction(回调:函数);
导出默认myfunction;
}
但在我的d.ts文件中,我有以下错误:

TS1128:需要声明或语句

我不明白为什么,因为我的考试很容易

我使用webpack来构建代码,这是我的webpack.config.js

module.exports={
条目:“./index.ts”,
输出:{
路径:“bundle/”,
文件名:“bundle.js”
},
决心:{
扩展名:[“.ts”、“.tsx”、“.js”]
},
模块:{
装载机:[
{test:/\.tsx?$/,加载程序:“ts加载程序”}
]
}
};
还有我的tsconfig.json

{
“编译器选项”:{
“目标”:“es5”
}
}
如果您有任何想法:)


如果要直接加载.js文件,只需在编译器选项中设置“allowJS”标志。TS将尝试使用基于JS的类型推断。


因此,在您的情况下,只需将allowJS标志添加到编译器选项中,并跳过d.ts文件。

如果您想直接加载.js文件,只需在编译器选项中设置“allowJS”标志。TS将尝试使用基于JS的类型推断。


因此,在您的情况下,只需将allowJS标志添加到编译器选项中,并跳过d.ts文件。

此设置对我有效

//toto.js
function myfunction(callback) {
    callback("42")
}    
exports.default=myfunction


//toto.d.ts
export default function myfunction(callback : Function);


//main.ts
import myfunc from './toto'    
myfunc((res) => console.log(res) )


//tsconfig.json
{
    "compilerOptions": {
        "target" : "es5"
    }
 }
运行
node main.js
正确记录42


或者使用
allowJs

  • 从上面的设置中,删除
    toto.d.ts
    定义文件
  • 在tsconfig编译器选项中添加
    “allowJs”:true


=>第一种解决方案需要创建定义文件,但在
main.ts

中使用
myfunc
时,您可以从打字中获益。此设置适合我

//toto.js
function myfunction(callback) {
    callback("42")
}    
exports.default=myfunction


//toto.d.ts
export default function myfunction(callback : Function);


//main.ts
import myfunc from './toto'    
myfunc((res) => console.log(res) )


//tsconfig.json
{
    "compilerOptions": {
        "target" : "es5"
    }
 }
运行
node main.js
正确记录42


或者使用
allowJs

  • 从上面的设置中,删除
    toto.d.ts
    定义文件
  • 在tsconfig编译器选项中添加
    “allowJs”:true


=>第一种解决方案需要创建一个定义文件,但在
main.ts

中使用
myfunc
时,您可以从键入中获益。最后,我发现了我的问题,我的EDI(phpStorm)太旧,它在Typescript 1.4中编译代码,而我在Typescript 2.2.1中编译代码


感谢您的反馈,我不知道我是否可以使用此选项allowJs,但对于我来说,不建议使用此选项,因为我想用typedoc记录我的代码,并且我需要创建此d.ts文件来完成此操作。

最后我发现了我的问题,我的EDI(phpStorm)太旧了,它在Typescript 1.4中编译代码,而我在Typescript 2.2.1中


感谢您的反馈,我不知道我是否可以使用此选项allowJs,但对我来说,不建议使用此选项,因为我想用typedoc记录我的代码,我需要创建此d.ts文件来完成此操作。

完成后,您的
d.ts
文件将放置在何处?>与index相同的位置。tsI想导入一个js文件以显示itToto的代码这只是一个示例,我想导入此文件:完成后,您的
d.ts
文件将放置在何处?>与index.tsI想导入js文件显示itToto的代码这只是一个示例,我想导入此文件: