メインコンテンツまでスキップ

型アサーション(type assertion)

型アサーションはTypeScriptによる推論を上書きするために使う機能です。

つまりTypeScriptくんに対し不遜にも「お前は間違っている、俺が正しいんだ」と伝えるための機能というわけです。

ただしあまりにもかけ離れた上書きはできないので注意というか安心して欲しい。まぁ抜け道ははあるんですが。

as修飾子(?)を使ってこの様にして表現します。

const a: number = 1
const b: 1 = a // ERROR!
const c: 1 = a as 1 // OK!

んで注意したいのが以下が可能ということです。

const a: number = 2
const c: 1 = a as 1 // OK!

asの正確な効果

若干予想が挟まるのですが、asは同一要素を持つ型間での上書きを可能とします。つまりこれはできないというわけです。

const a: 1 = 1
const b: 2 = a as 2

これが先ほど言った、あまりにもかけ離れている場合には上書きできない、というケースです。

抜け道

これには一応抜け道があるので紹介しておきます。悪用すると保守できないコードが出来上がるので気をつけてください。

const a: 1 = 1
const b: 2 = a as unknown as 2
// または
const c: 2 = a as any as 2
// このケースであればnumberでも良くて
const d: 2 = a as number as 2

この様に、かなり大きい型に上書きした上で小さい目的の型に上書きするという方法です。 ほんとにやってること頭おかしいんでやめた方がいいと思います。