繁体   English   中英

导出 typescript 类型定义

[英]Exporting typescript type definitions

在我的项目中,我想要一个包含所有typescript定义的文件,如下所示:

type_defs.tsx

interface T_oauth_obj {
    oauth_callback: string,
    oauth_consumer_key: string,
    oauth_nonce: string,
    oauth_signature_method: string,
    oauth_timestamp: string,
    oauth_version: number,
    oauth_signature: string,
}

interface IAuthRequests {
    getRequestToken: () => string
    Authorize(): void
    getAccessToken(): void  
}
...

问题是当我尝试像这样导出类型定义时:

export {IAuthRequests, T_oauth_obj}

我得到错误:

Re-exporting a type when the '--isolatedModules'...

正如我在网上发现的那样,typedef 文件只能有默认导出,这意味着我必须为每个类型定义准备一个文件,这绝对是荒谬的!

在我看来,不允许对 typedef 进行多个非默认导出的约束完全是无稽之谈,并且使编码变得多余且难以重用。 拥有一个包含所有 typedef 的文件有助于拥有更整洁和可调试的代码。

附言

有没有办法实现我所说的目标?

试试这样:

export interface T_oauth_obj {
    oauth_callback: string,
    oauth_consumer_key: string,
    oauth_nonce: string,
    oauth_signature_method: string,
    oauth_timestamp: string,
    oauth_version: number,
    oauth_signature: string,
}

export interface IAuthRequests {
    getRequestToken: () => string
    Authorize(): void
    getAccessToken(): void  
}

然后导入:

import { T_oauth_obj, IAuthRequests } from "your.file"

您的导出类型可以命名,或者每个文件可以有一个默认类型导出。 export关键字根本不允许导出多个值。

因此,由于它一次仅适用于一个值或一个类型,因此这将不起作用,因为{IAuthRequests, T_oauth_obj}不是有效的单一类型。

您可以执行整个类型的默认导出,但这可能不是您想要的:

export default { req: IAuthRequests, oauth: T_oauth_obj }

或者你可以这样做:

export interface IAuthRequests { ... }
export interface T_oauth_obj { ... }

如果您希望一个export关键字导出多个命名类型,那么我没有其他帮助,只能说它只是不这样做 要回答为什么您可能不得不询问 typescript 维护人员。 答案可能是经过深思熟虑的设计选择,以更接近地匹配export的工作方式是纯 JS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM