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

23 浏览
0 Comments

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

我正在使用Typescript构建一个大型库,大约有100个独立的ts文件。

以前我使用export module XXX(后来改名为export namespace XXX)来为所有的类导出,但正如书中所说,这不是一种推荐的方法,我应该使用import。

所以我尝试了导入,这个很好使:

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

但是由于我有100个文件,我不想为每一个文件都添加这样一行代码。而且我希望所有的类都可以通过mylib变量进行访问。

于是我尝试了这个:

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

但是当我这样做的时候,我会遇到这样的错误:Cannot find module \'./source/\'

有没有一种方法可以在一个单独的行中将文件夹中的所有类全部导入?

admin 更改状态以发布 2023年5月24日
0
0 Comments

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";

我假设你正在使用node风格的模块解析,因为这是推荐的方式。请查看typescript文档,了解typescript中模块解析的更多细节。

通常,你想要实现的是创建一个index.d.ts文件,该文件作为入口点,从中导出其他模块。

我以angular2为例:

你常见的angular2引入看起来像这样:

import { Injectable } from '@angular/core'

core只是一个位于@angular目录中的目录。就像你的source目录一样。然而,在core目录中有一个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';
....

0