[英]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.