TypeScript 基礎編(20問・追撃なし)
TypeScript を「使ったことはある」状態から、面談で前提として問われる型の考え方を埋めるための20問。 any と unknown、絞り込み、ジェネリクス、tsconfig、6.0 と 7.0 の変更点まで。全問4択、追撃はありません。
20 問20 ノード追撃なし・約5分
答えるまで正解と解説は表示されません。下の一覧は解説つきのカタログなので、答えを見たくない場合は先に始めてください。
質問カタログ(模範解答つき)
面接官が何を見ているか、模範解答は何かを先に読みたい場合はこちらから。
- 01any と unknown は、どちらも「何でも入る型」です。何が違いますか。
- 02関数の引数に型を書かないと、どうなりますか。
- 03interface と type(型エイリアス)は、どう使い分けますか。
- 04string | number 型の引数を受け取って、文字列のときだけ toUpperCase() を呼びたい。どうしますか。
- 05{ kind: "circle"; radius: number } と { kind: "square"; size: number } のユニオン型を扱うとき、何を手がかりに分岐しますか。
- 06型アサーション(as)を使うのは、どういう場面ですか。
- 07user!.name の「!」は何をしていますか。
- 08tsconfig.json に strict を書いていないプロジェクトでは、strict は有効ですか。
- 09strictNullChecks が有効だと、何が変わりますか。
- 10ジェネリクスは、どういうときに使いますか。
- 11既存の User 型から、すべてのプロパティを省略可能にした型を作りたい。どうしますか。
- 12const colors = ["red", "green"] as const の as const は、何をしていますか。
- 13satisfies 演算子は、型注釈(const x: T = ...)と何が違いますか。
- 14TypeScript の enum について、注意すべきことはどれですか。
- 15{ name: string } 型を受け取る関数に、{ name: "a", age: 3 } を変数に入れてから渡すと、どうなりますか。
- 16API から受け取った JSON に type User を付けました。実行時に中身が User の形であることは保証されますか。
- 17型定義が同梱されていない npm パッケージを使うと、型が付きません。どうしますか。
- 18never 型は、どういう値の型ですか。
- 19配列 const list: string[] = [] で、list[0] の型は何になりますか(既定の設定で)。
- 20TypeScript 7.0 は、それまでの版と何が違いますか。