首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Typescript 1.8模块:从文件夹导入所有文件

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

Stack Overflow用户
提问于 2016-07-02 17:07:20
回答 1查看 42.6K关注 0票数 34

我正在用Typescript构建一个很大的库,大约有100个单独的ts文件。以前我所有的类都使用导出模块XXX (后来重命名为导出命名空间XXX ),但正如书中所说,这不是一种推荐的方式,我应该使用导入。

所以我试着导入。这样做效果很好:

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

但是因为我有100个文件,所以我不想为所有文件添加这样的行。我希望我的所有类都可以通过mylib变量来访问。

所以我试了一下:

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

但只要我这样做,我就会得到:找不到模块'./source/'

有没有一种方法可以通过一行导入包含多个文件的文件夹中的所有类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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';
....
票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38158429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档