首页 > 解决方案 > 导出 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 创建以这种方式运行的导出?

标签: typescript

解决方案


推荐阅读