①
typescript
1type OneOf<T extends any[]> = T extends (infer R)[] ? R : never; 2 3const values:("A"|"B")[] = ["A","B"] 4 5type Foo = OneOf<typeof values>;
ジェネリクスでTという配列型を要求するOneOfというtypeがあり、そこにOneOf<typeof values>という形で値を渡しています。
②
typescript
1const values:("A"|"B")[] = ["A","B"] 2let a = typeof values //let a: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
しかしtypeof valuesの型を見てみると、配列型ではない値が定義されています。
なぜ①のコードは配列型ではない値をOneOfに渡しているのに正常に動くのでしょうか?静的型付け言語を初めて触っており苦戦しております。。。
回答1件
あなたの回答
tips
プレビュー