SimonAllen

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

什麼是 Serverless 架構?

前陣子又聽到了 Serverless(無伺服器)架構這個酷東西,我第一次聽到 Serverless 應該是某年 Modern Web Conference 對岸講者的分享,想想還是簡單記錄一下。 Serverless 乍聽之下好像是「沒有伺服器」,但實際上伺服器並沒有消失,而是由雲端服務供應商(如 AWS、Google Cloud、Azure)負責管理。 我們只是不再需要手動設定、部署、監控這些伺服器,這些繁瑣的基礎建設交給他們來搞定,我們開發者就可以專注在寫程式碼上,開心寫邏輯,寫完就交給雲端去跑。 Serverless 是怎麼來的? Serverless 架構的核心思想,是讓開發者不必管理伺服器,透過「功能即服務(Function as a Service,FaaS)」或「後端即服務(Backend as a Service,BaaS)」的形式來實作。