Javascript d、 ts文件导出模块
我从Typescript开始,尝试创建一个新模块,但遇到了一些问题 我想将一个js文件导入index.ts,因此我知道我必须创建一个d.ts文件,以便创建和解释typescript的函数。在我的index.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:需要声明或语句 我不明白为什么,因为我的考试很容易
从“/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的代码这只是一个示例,我想导入此文件: