导入语句和路径之间的打字稿差异
Typescript differences between import statements and paths
我有一个 class 想导入到某个地方 ("example.ts"):
export class Example {
constructor() {
}
public someFunction() { }
}
谁能告诉我这三个来自 typescript 的 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"
具体什么时候我必须使用哪条路径?
假设 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 observable 原型并添加 map 运算符。出口并不重要——执行很重要。这在 nodejs 环境中尤其重要,因为它会被转译为 require('./example')
.
我将在这里稍微修改一下您的示例:
"./example"
- 指同一目录中的文件。您通常会用它来导入您的模块。
"example"
指的是所谓的非相关模块。这些是相对于 tsconfig.json
中的 baseUrl
或使用路径映射解决的。通常路径映射会映射到您的 node_modules
,因此您可以导入您的库。因此,您通常会使用它来导入外部模块。
"example.ts"
- 在打字稿中,导入文件名不允许以 .ts
结尾。因此只需使用 4. 或 5.
我有一个 class 想导入到某个地方 ("example.ts"):
export class Example {
constructor() {
}
public someFunction() { }
}
谁能告诉我这三个来自 typescript 的 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"
具体什么时候我必须使用哪条路径?
假设 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 observable 原型并添加 map 运算符。出口并不重要——执行很重要。这在 nodejs 环境中尤其重要,因为它会被转译为require('./example')
.
我将在这里稍微修改一下您的示例:
"./example"
- 指同一目录中的文件。您通常会用它来导入您的模块。"example"
指的是所谓的非相关模块。这些是相对于tsconfig.json
中的baseUrl
或使用路径映射解决的。通常路径映射会映射到您的node_modules
,因此您可以导入您的库。因此,您通常会使用它来导入外部模块。"example.ts"
- 在打字稿中,导入文件名不允许以.ts
结尾。因此只需使用 4. 或 5.