import语句和路径之间的Typescript差异

时间:2017-11-13 12:49:58

标签: typescript typescript2.0

我有一个要在某处导入的类(“example.ts”):

export class Example {
  constructor() {
  }

  public someFunction() { }
}

有人可以告诉我这些来自打字稿的三个import语句之间的区别吗?

  1. import * as example from "./example.ts"
  2. import { example } from "./example.ts"import { example } as example from "./example.ts"
  3. import "./example.ts"
  4. 路径名称也有区别:

    1. "./example.ts"
    2. "example.ts"
    3. "example"
    4. 什么时候我必须使用哪条路径?

1 个答案:

答案 0 :(得分:4)

让我们说example.ts看起来像这样:

export const PI = 3.14
export function sayHello() { console.log('hi'); }
export default function() { console.log('i am default'); }
  1. import * as example from "./example" - 这会将从example.ts导出的所有内容转移到example变量下。因此,您将撰写example.sayHello()example.PI等内容。您可能想知道默认导出在哪里。这个位于default密钥下,因此您可以使用example.default()
  2. 访问它
  3. import { PI, sayHello } from "./example"这样您只能从example.ts导入特定部分。在这个例子中只有PI变量和sayHello函数。您可以直接致电:sayHello()
  4. import "./example" - 这用于基本上执行文件。例如,当有一些副作用。例如,在rxjs中,我们使用import 'rxjs/add/operator/map'来修改rxjs可观察原型并添加地图运算符。出口并不重要 - 执行很重要。这在nodejs环境中尤为重要,因为它会被转换为require('./example')
  5. 我将在这里修改你的例子:

    1. "./example" - 指向同一目录中的文件。您通常会使用它来导入模块。
    2. "example"指的是所谓的非相对模块。相对于baseUrl中的tsconfig.json或使用路径映射解决了这些问题。通常,路径映射映射到node_modules,因此您可以导入库。因此,您通常会使用此项来导入外部模块。
    3. "example.ts" - 在打字稿中,导入文件名不允许以.ts结尾。因此,只需使用4.或5.
    4. 这是reference in TS documentation