配列をunion型に変換する
[number]で添字する
例
code:ts
type A = Tuplenumber; // 'a'|'b'|'c'|'d' ArrayやTupleは実際はobject型として定義されているので、実体は以下のような型
code:1.ts
type Tuple = {
0: "a";
1: "b";
2: "c";
3: "d";
length: 4;
toString: () => string;
toLocaleString: () => string;
pop: () => "a" | "b" | "c" | "d" | undefined;
push: (...items: ("a" | "b" | "c" | "d")[]) => number;
... 29 more ...;
at: (index: number) => "a" | ... 3 more ... | undefined;
}
これはtype B = { [K in keyof Tuple]: Tuple[K] };のように定義してVSCodeとかでhoverすれば見れるmrsekut.icon
ここで、1.tsの1行目に、[x: number]: ..と書かれている
だから、
code:ts
type Tuple = {
// ここから下はあまり関係ない
0: 'a';
1: 'b';
2: 'c';
3: 'd';
length: 4;
};
type A = Tuplenumber; // 'a' | 'b' | 'c' | 'd'; こんな感じになる