Typescript 1.8模块:从文件夹导入所有文件

时间:2016-07-02 09:07:20

标签: typescript typescript1.8

我正在使用Typescript构建一个包含100个独立ts文件的大型库。 以前我使用导出模块XXX (稍后重命名为导出命名空间XXX )用于我的所有课程,但正如书籍所说,这不是推荐的方法,我应该使用导入代替

所以我尝试导入。这很好用:

import * as mylib from "./source/source.ts";

但由于我有100个文件,我不想为所有这些文件添加这样的行。我希望通过 mylib 变量访问我的所有课程。

所以我尝试了这个:

import * as mylib from "./source/";

但是当我这样做时,我得到:无法找到模块' ./ source /'

有没有办法从一个包含多行文件的文件夹中导入所有类?

1 个答案:

答案 0 :(得分:30)

tsc提供的两种模块解析策略都不支持这种行为。您想要的导入声明

import * as mylib from "./source/";

实际上是按此顺序执行检查:

1. (does package.json have a typings key? If so, import this file)
2. import * as mylib from "./source/index.ts";
3. import * as mylib from "./source/index.tsx";
4. import * as mylib from "./source/index.d.ts";

我假设你在这里使用节点式模块解析,你可能会这样,因为它是推荐的方式。检查typescript docs以获取有关如何在打字稿中完成模块解析的更多详细信息。

通常,您要完成的工作是创建一个index.d.ts文件,该文件用作导出其余模块的入口点。 我使用angular2作为例子: 您常见的angular2导入如下所示:

import { Injectable } from '@angular/core'

core只是一个位于@angular目录中的目录。就像您的source目录一样。但是,在核心目录中存在index.d.ts文件:

/**
 * @module
 * @description
 * Starting point to import all public core APIs.
 */
export * from './src/metadata';
export * from './src/util';
export * from './src/di';
....