有人可以使用Typescript准确解释导出和导入在NodeJS中的工作原理吗?
我的设置是:
我正在搞乱出口/进口,而不是做一些正确的编码,它让我疯狂,并且找不到任何正确的解释它是如何工作的。
导入
请您解释一下:
var module = require ("module");
import module = require("module");
import module from "module";
import {something} from "module";
import * as module from "module";
导出
您能否解释一下
export = something;
export default something;
export interface|class something;
问题
我似乎无法找到正确的导出与导入的方法,因此我的IDE不会被红色覆盖并向我抛出数百个错误。
一般问题
问题列表一直在继续,但是我确定一旦上面的一些问题得到解答,我就可以了解其余问题。
谢谢你,对于这样一个普遍的问题感到抱歉,但我的沮丧程度刚刚达到顶峰......
答案 0 :(得分:12)
同意,导入/导出语法至少有两个原因令人困惑:
var module = require ("module");
有效,但这是commonjs - >没有打字import x = require('y'
)现已在TS TL; DR; :使用TS 1.5中引入的'es6 style'语法
我知道TS中导入/导出的“最佳”资源是this
总体而言,我建议您阅读此excellent handbook,这将为您的大部分问题提供答案
从默认导出
Something
被导出为默认(单个)导出,即ts / es6中的export default Something
使用
import Something from "module"
您实际上可以使用其他名称导入默认导出。 import SomethingElse from 'module'
也可以使用
来自指定的出口
Something
使用export {Something}
或{/ 1}}在ts / es6
您只想导入,请使用
export class|interface Something{}
您想要导入从名称空间import {Something} from "module"
mod
然后使用import * as mod from "module
请参阅上面的const c:mod.Something = whatever
不推荐使用表单import
以支持新的ES6样式语法。它主要在定义文件中找到,以表示js库导出单个函数/对象的事实,例如export = something
。
使用ES6样式语法并避免导出module.exports=something
:它们的优点是可以使用其他名称导入它们,但
default
具体而言,导出需要导出的内容并专门导入
在import {Something as SomethingElse} from "module"
api.ts
在export interface MyInterface {
}
export class MyClass {
}
main.ts
有许多好的IDE可以提供优秀的linting:VSCode,Atom Typescript和Webstorm来命名一个受欢迎的少数,前两个是免费的,第三个甚至管理你的导入。