我正在用Typescript构建一个很大的库,大约有100个单独的ts文件。以前我所有的类都使用导出模块XXX (后来重命名为导出命名空间XXX ),但正如书中所说,这不是一种推荐的方式,我应该使用导入。
所以我试着导入。这样做效果很好:
import * as mylib from "./source/source.ts";
但是因为我有100个文件,所以我不想为所有文件添加这样的行。我希望我的所有类都可以通过mylib变量来访问。
所以我试了一下:
import * as mylib from "./source/";
但只要我这样做,我就会得到:找不到模块'./source/'
有没有一种方法可以通过一行导入包含多个文件的文件夹中的所有类?
发布于 2016-07-02 18:02:11
tsc提供的两种模块解析策略都不支持这种行为。您想要的import语句是什么
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中完成模块解析的更多详细信息,请查看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';
....
https://stackoverflow.com/questions/38158429
复制相似问题