00

ガイド

TYPESCRIPT INTERVIEW Qs

TypeScript開発者を採用する際の技術面接で使える質問と模範回答。型システム、Generics、Union、型ガード、Utility Typesなどを網羅。

最終更新:2026年5月

01

typeとinterfaceの違いを説明してください

interfaceはオブジェクトの形状を定義し、宣言のマージ(declaration merging)が可能で、同名のinterfaceを複数回定義すると自動的に結合されます。typeはエイリアスとしてより広く使え、プリミティブ、Union、Intersection、Tupleなど任意の型に名前を付けられます。拡張はinterfaceがextends、typeがIntersection(&)を使います。ライブラリの公開APIではinterfaceが推奨されることが多いです。

02

Genericsを使うメリットと具体的な例を教えてください

Genericsにより、型安全を保ちながら再利用可能なコードを書けます。例:function identity<T>(arg: T): T { return arg; }。Tが具体的な型に推論されるため、anyを使うより型情報が失われません。ReactではuseState<T>、Promise<T>、配列メソッドなど、あらゆる場所でGenericsが使われています。

03

Discriminated Unionとは何ですか?どう使いますか?

共通のリテラル型プロパティ(discriminant)を持つ複数の型をUnionで結合したものです。例:type Shape = { kind: 'circle'; radius: number } | { kind: 'square'; side: number };。switchやif文でkindをチェックすることで、型ガードなしに各型の固有プロパティに安全にアクセスできます。ReduxのAction型やAPIレスポンスの結果型に広く使われます。

04

Type Guardの種類と用途を説明してください

主なType Guardには3種類あります。(1) typeof演算子 — プリミティブ型(string, number, boolean)を絞り込みます。(2) instanceof演算子 — クラスのインスタンスを判別します。(3) ユーザー定義型ガード — arg is Type を返す関数を自作し、複雑な型の絞り込みを行います。ランタイムで型を保証し、コンパイラに型情報を伝える役割を持ちます。

05

Utility Types(Partial, Pick, Omit, Recordなど)の使いどころは?

Utility Typesで既存の型から新しい型を生成し、DRY原則を守ります。Partial<T>はフォームの更新用オブジェクトで全プロパティをoptionalにします。Pick<T, K>は必要なプロパティだけを抽出した表示用型に使います。Omit<T, K>は特定プロパティを除外したDTOに使います。Record<K, T>はマッピング型や設定オブジェクトの型付けに便利です。

06

strictモードを有効にするメリットと注意点は何ですか?

strict: trueを有効にすると、noImplicitAny、strictNullChecks、strictFunctionTypesなどが一括で有効になり、型安全性が劇的に向上します。特にstrictNullChecksは、undefinedやnullによるランタイムエラーを大幅に減らします。注意点として、既存のJavaScriptプロジェクトからの移行時は大量の型エラーが発生するため、段階的に有効化するか、strictNullChecksから始めるのが現実的です。

07

お問い合わせ

TypeScript開発者を探していますか?

技術面接のサポート、採用プロセスの相談、または直接TypeScriptエンジニアとして参画することも可能です。

TypeScript開発者向け面接質問 2026 | Code Your Reality