簡體   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