satisfies: 安全なアップキャスト(TypeScript 4.9)
(engineering.ab180.co)-
TypeScript 4.9 は11月15日にリリース予定で、9月20日からベータテスト開始予定
- 現在は Playground で nightly として利用可能
-
TypeScript 4.9 に
satisfiesキーワードが追加 -
既存の
asキーワードとは異なり、安全なアップキャストをサポート -
従来は、型があらかじめ定義されている場合にのみ安全なアップキャストが可能だった
-
satisfiesを使うと、object の1つの key-value に対しても手軽に安全なアップキャストが可能 -
従来
// 安全だが面倒な型定義が必要(型定義)
const object: {
a: number
b: { a: number }
} = {
a: 10,
b: { a: 10, b: 20 } // no error
// b: {} // error
}
// 手軽だが安全ではない(as)
const object = {
a: 10,
b: { a: 10, b: 20 } as { a: number } // no error
// b: {} as { a: number } // no error (!!!)
}
- satisfies
// 手軽で安全
const object = {
a: 10,
b: { a: 10, b: 20 } satisfies { a: number } // no error
// b: {} satisfies { a: number } // error
}
3件のコメント
むしろ
const assertionを外してsatisfiesを入れてほしかった、という惜しさがありますね,,あっ、
const assertion-> 単なる assertion ですだんだん複雑になっていく感じですね(泣)