gpt4 book ai didi

javascript - 如何在 Typescript 中声明 ES6 模块的类型?

转载 作者:搜寻专家 更新时间:2023-10-30 21:00:11 25 4
gpt4 key购买 nike

我有一个像这样的存储库的通用接口(interface)。

export interface IBaseRepository<T> {
create(model: T): T;
edit(model: T): T;
read(): T
}

我正在尝试在这样的功能模块中实现此存储库接口(interface)(因为它基本上是无状态单例)。

// user-repository.ts
export function create(model: IUser): IUser { ...code }

export function edit(model: IUser): IUser { ...code }

export function read(): IUser { ...code }

有什么方法可以确保 IBaseRepositoryUserRepository 中实现。或者我是否必须始终将存储库实现为类并导出实例化的单例?

最佳答案

您可以将所有函数捆绑到一个对象中并将其导出。

像这样:

import { IBaseRepository } from './master';
// user-repository.ts
export function create(model: string): string { return ''; }

export function edit(model: string): string { return ''; }

export function read(): string { return ''; }

export const repository: IBaseRepository<string> = { create, edit, read };

并像使用模块导出的任何其他东西一样使用它:

import { repository } from './repo';

repository.create('test');

或者如果您希望默认模块导出的类型为该类型,则使用默认导出 直接导出函数。

import { IBaseRepository } from './master';
// user-repository.ts
export function create(model: string): string { return ''; }

export function edit(model: string): string { return ''; }

export function read(): string { return ''; }

export default { create, edit, read } as IBaseRepository<string>;

并导入模块获取或单独导入函数:

import repo, { create } from './repo';

repo.create('test');

当然,您仍然可以独立导入每个函数。

注意根据您的示例使用类型我只是想让事情更简单。

关于javascript - 如何在 Typescript 中声明 ES6 模块的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45713346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com