Slide 16
Slide 16 text
エラーハンドリングが容易とは?(Result型)
type JsonType= { msg: string }
function fooChildren
(str: string): Result {
try {
const json = JSON.parse(str) as T
return new Success(json)
} catch(error) {
// ...省略
return new Failure(new Error('unknown Error'
))
}
}
function foo(str: string): Result<{json1: T,json2: T }, Error> {
const result1 = fooChildren
(str)
if (result1.isFailure()) {
// joson1のエラー
return new Failure(result1.error)
}
const result2 = fooChildren
(str)
if (result2.isFailure()) {
// joson2のエラー
return new Failure(result2.error)
}
return new Success({json1:result1.value, json2: result2.value})
}
function main() {
const result = foo('{ "msg":"hello" }'
) // {“json1”:{“msg”:”hello”}, “json2”:{“msg”:”hello”}}
if(result.isFailure()) {
// ...省略(そのまま出力で
OK。ここでごちゃごちゃしない)
return
}
return result.value
}
・エラー判定処理がif文の下にすぐ書ける
・1つ1つのエラーを個別に考えることができる
・コードが見易い