typescript - 导出 Typescript 类型和类以创建类似 AWS 的开发工具包
问题描述
我正在创建一个节点 SDK NPM 包供内部使用。我经常使用 AWS SDK,我想模仿它我喜欢的部分。具体来说,我喜欢导入的对象可以立即实例化,而且还附有类型信息:
import { S3 } from 'aws-sdk';
const s3 = new S3(); // Object can be instantiated
const someParams: S3.DeleteObjectsRequest = { // Object also has type info attached
...
}
我接近实现这一目标的实现,但不是 100%:
// src/UserTypes.ts File Content
export interface SomeUserType {
someField: string;
}
// src/User.ts File Content
export * from './UserTypes';
export class User {
constructor() {}
}
// index.ts File Content
export * as User from './src/User';
将 sdk 导入项目,我得到了我想要的一半行为:
import { User } from 'my-sdk'
const user = new User.User(); // <-- Extra 'User' required here
const param: User.SomeUserType = { // This line works as desired
...
}
或者,如果我export default class User {}
在 src/User.ts 中:
const user = new User.default(); // <-- Extra 'default' required (which coincidentally throws a TS error)
const param: User.SomeUserType = { // This line still works
...
}
是否可以从我的 SDK 创建以这种方式运行的导出?
解决方案
推荐阅读
- git - Git合并策略什么是“解决”策略?
- jsf - 无法将真假值设置为布尔变量
- python - 如何删除“vctl config list platform.driver”中列出的特定配置文件?
- html - 窗口最小化时按钮的响应性失败,但兄弟的响应性不会失败
- performance - 减小 elasticsearch 堆大小是否有助于提高搜索性能?
- javascript - 将 Stockfish 导入 React 应用程序:未捕获的 SyntaxError:意外的令牌 '<'
- amazon-web-services - cdk diff 与控制台更改没有区别
- javascript - Wistia Video 出现错误:play() 请求被调用 pause() 中断
- sql - 如何从 ArcGIS REST API 获取所有字段?
- html - 在文本和图像上混合混合模式