translation

AI 翻译的文章。

Sunrabbit

還在一個一個手動輸入類型嗎?

  • 撰写语言:韓国語
  • 基准国家:所有国家country-flag
  • 信息技术
个人资料图片

durumis AI 总结的文章

  • 在 TypeScript 中,直接輸入類型可能會降低可讀性,而使用高階類型可以更清晰地定義類型。
  • 利用 hotscript 庫,可以基於高階類型簡潔地管理類型定義。
  • 建議您利用提供多種功能的 hotscript 庫來提高程式碼可讀性,並根據需要使用它。

讓我們以一個程式碼範例來看看。

這段程式碼的功能是將每個單字的第一個字母轉換成大寫。

const firstLetterUpperCase = (str : string) => {
    return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" ");
}

console.log(firstLetterUpperCase("hello world"));


雖然很簡單,但這樣做會導致回傳類型變成 string,而無法進行類型推斷。

type FirstLetterUppercase =
    T extends ${infer R}${infer RestWord} ${infer RestSentence}
    ? ${Uppercase<R>}${RestWord} ${FirstLetterUppercase<RestSentence>}
    : T extends ${infer R}${infer RestWord}
    ? ${Uppercase<R>}${RestWord}
    : never;

const firstLetterUpperCase= (str : T) : FirstLetterUppercase => {
    return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" ") as FirstLetterUppercase ;
}

console.log(firstLetterUpperCase("hello world"));



當然,我們可以像上面這樣,一個一個地定義類型。

但是,這種類型定義的可讀性並不好。嵌套的三元運算子和遞迴結構是問題所在。

但令人驚訝的是,TypeScript 支援高階類型。

而且,基於這種高階類型,還有一個高階類型庫。



使用這個庫,我們可以更簡潔地整理類型定義。

type FirstLetterUppercase2= Pipe<
    T,
    [
        Strings.Split<" ">,
        Tuples.Map<Strings.Capitalize>,
        Tuples.Join<" ">
    ]
>;

type A = FirstLetterUppercase2<"hello world">;
//   ^? type = "Hello World"


這個程式碼在這裡。


像這樣,透過高階類型,我們可以讓類型定義更具可讀性。

此外,還有許多其他功能,建議您瀏覽一下網站,並在需要時使用。


Sunrabbit
Sunrabbit
The way to be a senior is to be a senior.
Sunrabbit
您還在使用函數式程式庫嗎?介紹函數式程式設計庫的變化和 Effect 架構的出現,並提到它有可能為 Node.js 行業樹立新的標準。

2024年7月30日

[可觀察性] 日誌收集器 Vector 挑戰記分享如何利用 Vector 將 Kubernetes 日誌與 Loki 整合,以及使用經驗、注意事項。涵蓋官方文件不足之處以及使用 Helm 時的注意事項等。

2024年3月9日

[Next.js] 執行時期環境變數注入本文說明如何在 Next.js 中注入建置後環境變數的方法,並改進使其在 Windows 和 Unix 環境中都能正常運作。

2024年3月20日

[Effective Java] 項目 6. 避免不必要的物件建立不必要的物件建立會導致記憶體浪費,因此,像字串或布林值這樣的物件,最好使用字面值或靜態工廠方法。
제이온
제이온
제이온
제이온

2024年4月28日

[Effective Java] 項目 5. 不要明確指定資源,改用依賴注入瞭解如何使用依賴注入來提高類別的彈性和可測試性,並消除對資源的明確依賴。
제이온
제이온
제이온
제이온

2024年4月28日

TypeScript(TypeScript)即將被淘汰?(feat 真實)本文整理了2023年程式語言排名第五的TypeScript淘汰爭議。探討TypeScript與JavaScript的差異,以及近期開源專案中淘汰TypeScript的趨勢。
렛플
렛플
렛플
렛플

2024年2月20日

[Java] 反射的概念及使用方法Java 反射是透過已載入至堆積的類別資訊,來啟用建立物件、存取欄位和方法的 API。它被應用於 Spring 框架等框架中,用於建立物件和依賴注入。
제이온
제이온
제이온
제이온

2024年4月25日

[Effective Java] 項目 4. 若要阻止實例化,請使用 private 建構函式說明當建立僅使用靜態方法和欄位的工具程式類別時,如何使用 private 建構函式來阻止實例化。
제이온
제이온
제이온
제이온

2024年4月28日

[有效 Java] 項目 2. 建構器參數眾多時,考慮使用建構器模式當建構器參數很多時,使用建構器模式可以提高可讀性和穩定性。與 JavaBeans 模式或逐步建構器模式相比,建構器模式更有效。
제이온
제이온
제이온
제이온

2024年4月27日