【发布时间】:2015-10-15 23:49:18
【问题描述】:
在 TypeScript 中,如何在不创建任何别名的情况下从文件中“导入 *”?
例如我有一个带有顶级导出函数的文件“utils”,并且希望在不为每个函数重新创建别名的情况下导入所有这些函数。
类似这样的:
import * from "utils";
这可能吗?
【问题讨论】:
标签: import typescript
在 TypeScript 中,如何在不创建任何别名的情况下从文件中“导入 *”?
例如我有一个带有顶级导出函数的文件“utils”,并且希望在不为每个函数重新创建别名的情况下导入所有这些函数。
类似这样的:
import * from "utils";
这可能吗?
【问题讨论】:
标签: import typescript
您无法生成自动名称,您必须为其指定一个本地文件名称。这是为了给每个文件自己的命名上下文而设计的。
// import the default export (something exported with "export default")
import Stuff from "./Stuff";
// import specific things only; aliases in this style are optional
import { ItemA as AliasA, ItemB as AliasB } from "./Stuff";
import { ItemA, ItemB } from "./Stuff";
// import everything at once, grouped under a common name
import * as Stuff from "./Stuff";
我...想要导入所有这些而不为每个函数重新创建别名。
听起来你想要上面的第三个选项。
但是使用这种语法会创建一个别名
我认为这个想法是,如果您可以在导入所有内容的同时采用定义的名称,那么您就会遇到命名冲突。这样做的方式是,您必须为每个导入选择一个名称,由您选择的名称来避免冲突,而不是让导入相互冲突。
我认为您可以做类似的事情,但只能使用 .d.ts 文件。 jquery.d.ts 做到了,但我不是 100% 确定它是如何工作的。你可以简单地说:
// where the file is really Stuff.d.ts
import "./Stuff";
【讨论】:
你已经接近它了:
import * as utils from 'utils';
没有花括号。
【讨论】:
import { name } from "file"。
_.extend(global, utils); 这样的函数来扩展全局命名空间,但是您仍然需要声明这些函数以便 TypeScript 理解:/
我认为这个想法是创建一个“Utils”模块,将所有函数和/或类附加到它,将 export 放在它们前面,然后将其导出,例如
module Utils {
export function add(first:number, second:number):number {
return first+second
}
}
export = Utils
虽然我还没有在 typescript 中使用过 es6 模块语法,但你似乎暗示要使用它。
【讨论】: