Length of Tuple
課題
タプルが与えられたとき、そのタプルの長さを返すような Length
を実装してくださ
い。
例:
type tesla = ["tesla", "model 3", "model X", "model Y"];
type spaceX = [
"FALCON 9",
"FALCON HEAVY",
"DRAGON",
"STARSHIP",
"HUMAN SPACEFLIGHT",
];
type teslaLength = Length<tesla>; // expected 4
type spaceXLength = Length<spaceX>; // expected 5
解答
JavaScript では length
プロパティを使用して配列の長さにアクセスできることをご
存知でしょう。型においても同様のことが可能です:
type Length<T extends any> = T["length"];
しかし、この方法では Type ‘length’ cannot be used to index type ‘T’ というコンパ イルエラーが発生してしまいます。そのため、型変数がこのプロパティをもっていること を TypeScript に伝えておく必要があります:
type Length<T extends { length: number }> = T["length"];
コメント