Latest

TypeScript 筆記:never 簡介

上一篇 TypeScript 筆記簡單介紹了 unknown,而此篇改來介紹另一個特殊型別—— never: never never 型別是所有型別的子集,TypeScript 「所有」型別(甚至包括 any、null 與 undefined)都有包含 never 例外處理的狀態,其在 TypeScript 2.0 版提出,表示不存在值的型別,那怎樣會出現不存在值的型別呢? 最常見的情形有兩種: * 無法結束的函式方法 * throw error 錯誤處理 無法結束的函式方法 無法結束函式方法情境,最常見就是函式內發生了無限迴圈的情況: function infiniteLoop(){ while(true){ } } 不過,上述程式碼在型別推論因為函式沒有回傳值,會被自動推論成 void。 可以這麼理解,當一個函式沒有返回值時,它的 return 值為 void 型別,
SimonAllen

TypeScript 筆記:unknown 簡介

延續上一篇 TS 筆記末尾,若版本允許,使用 unknown 會比 any 更好一點,此篇就來簡介一下 unknown: unknown unknown 型別容易與 any 搞混,其在 TypeScript 3.0 版提出,也是所有型別的聯集。unknown 意指未知型別,表示不知道當下是何種型別。使用 unknown 會允許 TypeScript 在之後仍可以賦值為任意型別。 unknown 和 any 的差異: * 不能直接操作屬性、方法、建構式 * 無法重新賦值給 unknown 或 any 外的型別 * 需要斷言或限縮型別 不能直接操作屬性、方法、建構式 在使用 any 的情境下,我們可以這樣寫,
SimonAllen

TypeScript 筆記:void 與 any

TypeScript 是 JavaScript 的超集合,最終還是編譯成 JavaScript,除了原本 JavaScript 的型別系統,TypeScript 還新增了一些特殊型別,例如:void、any、never 與 unknown。 此篇先以 void 與 any 介紹為主: void void 表示沒有 return 返回值的函數回傳值(空值)型別。 在撰寫 JavaScript 函式、方法時,函式不一定要 return 返回值出來,它不一定是有輸入就有輸出的 pure function。例如 JavaScript 我們可以這樣寫: let a = 1; function add(){ a = a + 1
SimonAllen

TypeScript 筆記:原始型別

談 TypeScript 的型別種類之前,要有個認知:TypeScript 是 JavaScript 的超集合,最終編譯成 JavaScript,純 JavaScript 語法都是可以在 TypeScript 撰寫的。而在 JavaScript 有分成原始型別 Primitive types 和物件型別 Object types,TypeScript 內自然也有,並且還新增了其他的型別設定。 此篇先從原始型別開始,TypeScript 的原始型別(比照 JavaScript)有:number (數值)、string (字串)、boolean (布林值)、null、undefined 與 ES6 新增的型別 Symbol。 number * 型別註記:用:number來標註。 * 型別斷言:用&
SimonAllen

TypeScript 筆記:推斷、註記與斷言

和 JavaScript 相比,TypeScript 最容易被提出差異的就是型別系統,其核心主要為註記、斷言與推論。 型別推論 Inference 在撰寫 TypeScript 時,如果沒有指出型別,那麼編譯器會照型別推論來推測型別。 例如,這樣寫會報錯: let years = '2021'; years = 2021; 在前面 let years = '2021'; 這段,雖然我們沒有使用斷言與註記限制變數 years 型別,但 TypeScript 按照型別推論規則推測 years 是字串型別(因為我們賦值了字串 "2021") 。 所以當後續 years = 2021; 要重新賦值數值時變報錯。 也就是等於 let years: string
SimonAllen

淺談 Jamstack 架構

前言 前陣子寫 Next.js 筆記時和朋友們討論 Gatsby.js「The static dynamic site generator for dynamic web developers」部分時提到了 Jamstack,其中一位夥伴說了: 那 Jamstack 跟我們寫框架的 SPA 網站不是一樣嗎? 提問者後續在其他人的解釋下才理解差異。之後想想,我在Next.js 筆記中 Jamstack 也只是草草帶過,確實有必要整理一下我的認知,大家教學相長,若此篇有什麼錯誤也歡迎指證。 什麼是 stack 架構? 有時我們會聽到 ${Something}stack 之類的名詞,開頭的字母即為技術的縮寫組合,例如: * LAMPstack: 一般稱 LAMP,包含由 L(Linux)、A(
SimonAllen

Next.js 入門:由 CRA 至 Gatsby 與 Next.js

此文不會講解為什麼 SSR 對 SEO 和 LCP 有幫助的原因 如果不懂 LCP 是什麼,可見 Google 關於 LCP 指標的說明 如果連 SPA 和 SSR 是什麼都不太懂,可以參考 Huli 大大寫的跟著小明一起搞懂技術名詞:MVC、SPA 與 SSR 前言 前陣子的 React 生態圈可謂是振奮人心,官方在今年 6 月初公布了 18 版的計畫,其中基於 Suspense 的 Server Side Rendering 架構另許多開發者眼睛一亮,畢竟從 Client Side Rendering (以下簡稱 CSR)跨到
SimonAllen