【问题标题】:Typescript differences between import statements and paths导入语句和路径之间的打字稿差异
【发布时间】:2018-04-26 03:50:48
【问题描述】:

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

export class Example {
  constructor() {
  }

  public someFunction() { }
}

谁能告诉我这三个 import 语句 from typescript 的区别?

  1. import * as example from "./example.ts"
  2. import { example } from "./example.ts"import { example } as example from "./example.ts"
  3. import "./example.ts"

路径名也有区别:

  1. "./example.ts"
  2. "example.ts"
  3. "example"

我究竟什么时候必须使用哪个路径?

【问题讨论】:

    标签: typescript typescript2.0


    【解决方案1】:

    假设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. import { PI, sayHello } from "./example" 这样您只从example.ts 导入特定部分。在这个例子中只有 PI 变量和 sayHello 函数。可以直接调用:sayHello()
    3. import "./example" - 这基本上用于执行文件。例如,当有一些副作用时。例如在 rxjs 中我们使用import 'rxjs/add/operator/map' 来修改 rxjs 的 observable 原型并添加 map 操作符。出口并不重要——执行很重要。这在 nodejs 环境中尤其重要,它会被转换为 require('./example')

    我会在这里稍微修改你的例子:

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

    这里是reference in TS documentation

    【讨论】:

      猜你喜欢
      • 2022-11-05
      • 2016-11-24
      • 2021-05-03
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 2021-11-29
      • 2012-09-01
      • 2017-12-03
      相关资源
      最近更新 更多