zer*_*oin 26 typescript typescript1.8
我正在使用Typescript构建一个包含100个独立ts文件的大型库.以前我使用导出模块XXX(稍后重命名为导出命名空间XXX)用于我的所有类,但正如书中所说,这不是推荐的方式,我应该使用import.
所以我尝试导入.这工作得很好:
import * as mylib from "./source/source.ts";
Run Code Online (Sandbox Code Playgroud)
但由于我有100个文件,我不想为所有这些文件添加这样的行.我想通过mylib变量访问所有类.
所以我尝试了这个:
import * as mylib from "./source/";
Run Code Online (Sandbox Code Playgroud)
但是一旦我这样做,我得到:找不到模块'./source/'
有没有办法从一个包含多行文件的文件夹中导入所有类?
Geo*_*rab 33
tsc提供的两种模块解析策略都不支持这种行为.您想要的导入声明
import * as mylib from "./source/";
Run Code Online (Sandbox Code Playgroud)
实际上是按以下顺序执行检查:
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";
Run Code Online (Sandbox Code Playgroud)
我假设你在这里使用节点式模块解析,你可能是因为它是推荐的方式.检查typescript文档以获取有关如何在typescript中完成模块解析的更多详细信息.
通常,您要完成的是创建一个index.d.ts文件,该文件用作导出其余模块的入口点.我使用angular2作为示例:您的常见angular2导入如下所示:
import { Injectable } from '@angular/core'
Run Code Online (Sandbox Code Playgroud)
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';
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27699 次 |
| 最近记录: |