Typescript es6 TS模块导入一个类似AMD的模块:我们能避免TS2306文件错误吗&引用;不是模块吗?
我的文件Typescript es6 TS模块导入一个类似AMD的模块:我们能避免TS2306文件错误吗&引用;不是模块吗?,typescript,Typescript,我的文件A.js(非类型脚本)如下所示: module({ }, function (imports) { return { foo: function () { // ... } }; }); 它的模块格式类似于AMD,实现类似于requirejs,只是格式稍有不同 然后文件B.ts(TypeScript)将其导入: import A from '../old-code/A' console.log(A) 这会产生如下
A.js
(非类型脚本)如下所示:
module({
}, function (imports) {
return {
foo: function () {
// ...
}
};
});
它的模块格式类似于AMD,实现类似于requirejs,只是格式稍有不同
然后文件B.ts
(TypeScript)将其导入:
import A from '../old-code/A'
console.log(A)
这会产生如下错误:
ERROR in ./src/app.ts
(9,17): error TS2306: File '/path/to/B.js' is not a module.
有没有办法解决这个问题,让TypeScript知道如何导入它
我是打字新手。。。我有一种感觉,有一种方法可以为它定义一个类型还是什么
编辑:我读过,但这并没有说明如何导入一个不是TypeScript的文件
我希望有一种方法可以定义文件导入和导出的内容。如果不是的话,那就再加一句吧
它的模块格式类似于AMD,实现类似于requirejs,只是格式稍有不同
据我所知,在TypeScript中导入非标准模块需要修改编译器,这对于最终用户来说是不可能的
但是,您仍然可以通过声明函数require(mod:string):模块系统中的任何
或类似内容做出让步
然后您可以编写require('A')
在运行时导入模块。代价是编译时不进行类型检查
如果您没有使用
allowJS
标志。您还可以编写声明文件,如:
A.d.ts
declare var a: {
test: number
}
export = a
注意命名约定,如果您有代码A.js
,编译器将自动搜索一个伴随的A.d.ts
,以import*作为from./A'
它的模块格式类似于AMD,实现类似于requirejs,只是格式稍有不同
据我所知,在TypeScript中导入非标准模块需要修改编译器,这对于最终用户来说是不可能的
但是,您仍然可以通过声明函数require(mod:string):模块系统中的任何
或类似内容做出让步
然后您可以编写require('A')
在运行时导入模块。代价是编译时不进行类型检查
如果您没有使用
allowJS
标志。您还可以编写声明文件,如:
A.d.ts
declare var a: {
test: number
}
export = a
请注意命名约定,如果您有code
A.js
,编译器将自动搜索一个伴随的A.d.ts
,以查找import*作为from./A'
我将它放在哪里?我是否将它放在A.d.ts
旁边的A.js
中?对于declare reuiqre
,将它放在编译器将搜索的全局typing.d.ts
中。我还使用A.d.ts
更新了方法。请检查一下。我确实在使用allowJs
,并且在该文件中发现了错误。我想我还有一些学习要做!基本上,A.js
导出一个属性为foo
的对象,该属性为'Function',没有参数和返回值。d.T.可能会怎样。文件看起来像什么?恐怕你不能。因为allowJs
指示编译器查找JavaScript源代码而不是您的定义文件。因此,declare require
方法是更好的方法。我已将allowJs
设置为true,但文件A.js
在includes
位置之外,我正在使用路径
定义非ts文件的位置。我也让它工作了,呜呜!我的A.d.ts
文件看起来像export function foo():void
,而我B.ts
我从'external/path/A'导入{foo}
(从external/path/A.js导入)。它正在编译,Webpack正在运行(我正在使用ts加载程序)。斯威耶!我该把它放在哪里?我是否将它放在A.d.ts
旁边的A.js
中?对于declare reuiqre
,将它放在编译器将搜索的全局typing.d.ts
中。我还使用A.d.ts
更新了方法。请检查一下。我确实在使用allowJs
,并且在该文件中发现了错误。我想我还有一些学习要做!基本上,A.js
导出一个属性为foo
的对象,该属性为'Function',没有参数和返回值。d.T.可能会怎样。文件看起来像什么?恐怕你不能。因为allowJs
指示编译器查找JavaScript源代码而不是您的定义文件。因此,declare require
方法是更好的方法。我已将allowJs
设置为true,但文件A.js
在includes
位置之外,我正在使用路径
定义非ts文件的位置。我也让它工作了,呜呜!我的A.d.ts
文件看起来像export function foo():void
,而我B.ts
我从'external/path/A'导入{foo}
(从external/path/A.js导入)。它正在编译,Webpack正在运行(我正在使用ts加载程序)。斯威耶!