如今的 Typescript 相較剛出來時已經熟成許多,現在是否真的值得在開發上使用 Typescript?從 Functional Programming 的角度來說 Typescript 有什麼缺陷?使用 Typescript 需要注意哪些問題?使用 Typescript 能帶來什麼優勢?什麼情況下適合導入 Typescript?
type
、何時用 interface
?如何決定用何者?以 code readability 來說,建議統一用 type
以 type check performance 的角度來說,建議用 interface
講者自己本身統一用 type
來定義
不行,絕大多數 Strong type 的語言,Type 最多只能做到 Type Safe 不能保證程式的邏輯正確,除非語言本身有提供足夠強的 dependent type,把商業邏輯都定義在 Type 裡,才能做到不寫 unit test,像是 Idris
必須先足夠熟悉專案,對專案的功能都有一定的了解,知道需要定義哪些 Types 後,再把 any
type 改成 unknown
type 並足一把 Type Error 清掉。
可以用 fp-ts 的 Either,讓 Promise 永遠都回傳 Either type,拿到 Either 後判斷是 Right
還是 Left
來拿到 data 或是 error, sample code 如下
import { Either, isRight, left, right } from 'fp-ts/Either';
type CreateUser = (input: UserInput) => Promise<Either<Error, User>>
const createUser: CreateUser = (input) => {
// ...
return User.create({ data: input })
.then(res => right(res))
.catch(error => {
// change to your custom error
console.error(error);
return left(error)
})
}