type-challenges 4日目(その2): 18-Length of Tuple

問題 & 解答

type-challenges/README.md at main · type-challenges/type-challengestype-challenges/README.md at main · type-challenges/type-challenges

タプルが与えられるので、その長さを型とするLengthを実装する

type tesla = ['tesla', 'model 3', 'model X', 'model Y'] as const
type spaceX = ['FALCON 9', 'FALCON HEAVY', 'DRAGON', 'STARSHIP', 'HUMAN SPACEFLIGHT'] as const

type teslaLength = Length<tesla>  // expected 4
type spaceXLength = Length<spaceX> // expected 5

constアサーションが適用されているので、readonlyな配列Tを定義する。 Array.prototypeのインスタンスプロパティlengthを指定して、長さを取得する。

type Length<T extends readonly any[]> = T['length']

調べたこと

Array.prototype.length

Array.length - JavaScript | MDN

length は Array 型のインスタンスであるオブジェクトのプロパティで、配列の要素の数を設定または取得します

感想

今回はIndex Accessed Typesとプロトタイプチェーンの復習でした。

最初にPickを解いた時は「これでeasyかよ!」と思ったりしていましたが、だんだん妥当に感じるようになってきました。 でもeasyで高度な型がでているってことは、mediumはえげつないのかな。


Buy Me A Coffeeikuma-tにお恵みを!