我有一个要在某处导入的类(“example.ts”):
export class Example {
constructor() {
}
public someFunction() { }
}
有人可以告诉我这些来自打字稿的三个import语句之间的区别吗?
import * as example from "./example.ts"
import { example } from "./example.ts"
或import { example } as example from "./example.ts"
import "./example.ts"
路径名称也有区别:
"./example.ts"
"example.ts"
"example"
什么时候我必须使用哪条路径?
答案 0 :(得分:4)
让我们说example.ts
看起来像这样:
export const PI = 3.14
export function sayHello() { console.log('hi'); }
export default function() { console.log('i am default'); }
import * as example from "./example"
- 这会将从example.ts
导出的所有内容转移到example
变量下。因此,您将撰写example.sayHello()
或example.PI
等内容。您可能想知道默认导出在哪里。这个位于default
密钥下,因此您可以使用example.default()
import { PI, sayHello } from "./example"
这样您只能从example.ts
导入特定部分。在这个例子中只有PI变量和sayHello函数。您可以直接致电:sayHello()
import "./example"
- 这用于基本上执行文件。例如,当有一些副作用。例如,在rxjs中,我们使用import 'rxjs/add/operator/map'
来修改rxjs可观察原型并添加地图运算符。出口并不重要 - 执行很重要。这在nodejs环境中尤为重要,因为它会被转换为require('./example')
。我将在这里修改你的例子:
"./example"
- 指向同一目录中的文件。您通常会使用它来导入模块。"example"
指的是所谓的非相对模块。相对于baseUrl
中的tsconfig.json
或使用路径映射解决了这些问题。通常,路径映射映射到node_modules
,因此您可以导入库。因此,您通常会使用此项来导入外部模块。"example.ts"
- 在打字稿中,导入文件名不允许以.ts
结尾。因此,只需使用4.或5.