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