我需要在TS模块中导出一堆模型和服务。
模型/ User.ts
import {IModel} from "./IModel";
export interface User extends IModel {
// ...
}
服务/ UserService.ts
import {inject} from 'aurelia-framework';
import {HttpClient} from 'aurelia-fetch-client';
import {BaseService} from "./BaseService";
import {User as ModelType} from "../models/User";
@inject(HttpClient)
export class UserService extends BaseService<ModelType> {
// ...
}
在构建项目之后,这就是我想要的结果。不一定是逐字逐句,但一般来说我希望我的根模块my-module
包含models
的子模块和services
的子模块 - 或者允许我以这样的方式访问事物:模型/服务不捆绑在同一“容器”下(例如,以避免模型/服务之间的名称冲突)。
DIST / index.d.ts
declare module "my-module/models" {
export interface User { ... }
// ... other models here ...
}
declare module "my-module/services" {
export class UserService { ... }
// ... other models here ...
}
这样我就可以通过npm
安装此软件包并在另一个项目中使用它:
import {User} from "my-module/models";
import {UserService} from "my-module/services";
index.ts
来解决这些问题。答案 0 :(得分:1)
似乎typings bundle
完全符合您的需要。它会将所有声明文件和依赖项合并到一个文件中。
让我们说例如。我有一个名为“stackoverflow”的模块,它有两个文件(stackoverflow.ts和constants.ts)。 index.ts取决于外部库(例如bluebird)和constants.ts。
<强> stackoverflow.ts 强>
import { PromisifyOptions } from 'bluebird'
export { FIRST } from './constants'
export interface thePromiseUsingInterface {
options: PromisifyOptions
}
<强> constants.ts 强>
export const FIRST = 1
export const SECOND = 2
生成主声明文件:
tsc --delcaration
)typings bundle -o index.d.ts
当您将库发布到npm时,请确保还包括typings.json。
在您的其他项目中,您可以npm install stackoverflow
开始使用它:
import * as constants from 'stackoverflow/constants'
console.log(constants.SECOND)
这里有一个gist with all the relevant files:stackoverflow.ts,constants.ts,index.d.ts,package.json,typings。