TSKaigi 2026 スポンサーブースクイズ解説

TSKaigi 2026 スポンサーブースクイズ解説

こんにちは、基幹システム本部リプレイス推進部のssssotaです。本記事では、TSKaigi 2026、ZOZOのスポンサーブースで実施したクイズを紹介・解説します。

はじめに

TSKaigi 2026は、2026年5月に実施されたTypeScriptに関するカンファレンスです。ZOZOはゴールドスポンサーとして参加し、スポンサーブースでTypeScriptやJavaScriptに関するクイズを実施しました。TSKaigi 2026のレポートは以下の記事にまとめていますので、あわせてご覧ください。

techblog.zozo.com

来場者の皆さんに体験してもらったクイズアプリはGitHubリポジトリで公開しています。RippleというUIフレームワークを用いてAIと共に実装しました。興味のある方はぜひリポジトリもご覧ください。

github.com

Rippleに興味のある方は、私がTSKaigi 2026で発表した登壇資料もあわせてご覧ください。

speakerdeck.com

目次

Day 1

TypeScript

Q1. 次のコードはエラーになる? (tsconfig strict:true)

const a = 1 + '1';
  1. 実行時エラー
  2. コンパイルエラー
  3. ならない

答えと解説

正解: 3. ならない

JavaScriptではnumberとstringの + 演算はstringへの暗黙変換で評価され、TypeScriptもこのケースは許容するためコンパイル/実行どちらもエラーになりません。禁止したい場合はESLint (typescript-eslint) の restrict-plus-operands やOxlintの typescript/restrict-plus-operands ルールを使用する必要があります。

Q2. X の型は?

type X = unknown extends number ? true : false;
  1. true
  2. false
  3. boolean

答えと解説

正解: 2. false

unknown は最上位型で number に代入可能ではないため、Conditional Typeは false 側に分岐します(参考:TypeScript Playground

Q3. TypeScript 7 はなんの言語で開発されている?

  1. TypeScript
  2. Rust
  3. Go

答えと解説

正解: 3. Go

TypeScript 7 (tsgo) はネイティブ実装としてGoで書き直されています。

Q4. enum を TypeScript コンパイラに渡すとどのような JavaScript コードが出力される?

enum Hoge {
  a, b
}
const a: Hoge = Hoge.a;
  1. IIFEでHogeオブジェクトを構築する形に展開される
  2. const enumと同等にインライン定数へ展開される

答えと解説

正解: 1. IIFE で Hoge オブジェクトを構築する形に展開される

通常のenumはランタイムオブジェクトとして残り、IIFEで双方向マップを構築する形に展開されます。const enumはインライン化されます(参考:TypeScript Playground

Q5. erasableSyntaxOnly でエラーになるのは?

class Hoge {
  private a?: number // A
  private b() {} // B
  constructor(private c: number) {} // C
}
  1. A
  2. B
  3. C

答えと解説

正解: 3. C

parameter properties (constructorprivate c) は、コード除去するだけでは等価にできずエラーになります。

JavaScript

Q6. 次のコードの出力は?

console.log(typeof null);
  1. "null"
  2. "undefined"
  3. "object"

答えと解説

正解: 3. "object"

歴史的経緯により typeof null"object" を返します(参考:typeof - JavaScript | MDN

Q7. 次の式の結果は?

JSON.stringify({ nan: NaN })
  1. {"nan":NaN}
  2. {"nan":null}
  3. Error

答えと解説

正解: 2. {"nan":null}

JSONではNaNを表現できないため、JSON.stringify はNaNを null にシリアライズします(参考:JSON.stringify() - JavaScript | MDN

ランタイム

Q8. 次の JavaScript ファイルを実行するとエラーになるのは?

globalThis.alert("Hello, TSKaigi!");
// node ./index.mjs
// deno run ./index.mjs
// bun run ./index.mjs
  1. Node.js
  2. Deno
  3. Bun

答えと解説

正解: 1. Node.js

alert はWeb互換APIとして DenoBun ではサポートされていますが、Node.jsには存在しません。

Q9. 次の JavaScript ファイルを実行するとエラーになるのは?

const obj = {};
obj.__proto__.a = 1;
console.log(obj.a);
// node ./index.mjs
// deno run ./index.mjs
// bun run ./index.mjs
  1. Node.js
  2. Deno
  3. Bun

答えと解説

正解: 2. Deno

Denoはセキュリティ上の理由から、 Object.prototype.__proto__ をサポートしていません。使用する場合は --unstable-unsafe-proto フラグを付けて実行する必要があります。Node.jsとBunはサポートしています。Node.jsでも --disable-proto フラグで無効化できます。

Q10. URL クラスはどの組織・仕様グループで標準化されている?

  1. WHATWG
  2. ECMA-262
  3. W3C

答えと解説

正解: 1. WHATWG

URLはWHATWGの URL Standard で標準化されています。

Day 2

TypeScript

Q1. X の型は?

type X = 1 extends number ? true : false;
  1. true
  2. false
  3. boolean

答えと解説

正解: 1. true

リテラル型 1number のサブタイプなので、Conditional Typeの真側 true が選ばれます(参考:TypeScript Playground

Q2. satisfies の正しい挙動は?

const x = { a: 1, b: 2 } satisfies { a: number; b: unknown };
  1. x の型は { a: number; b: number }
  2. x の型は { a: number; b: unknown }
  3. コンパイルエラー

答えと解説

正解: 1. x の型は { a: number; b: number }

satisfies は制約に適合することを検証しつつ、変数自身の推論結果(ここでは { a: number; b: number })を保持します(参考:TypeScript Playground

Q3. TypeScript 7 (tsgo) の開発コードネームは?

  1. Breeze
  2. Corsa
  3. Strada

答えと解説

正解: 2. Corsa

tsgoの開発コードネームはCorsaです。Stradaは既存のJS実装、Breezeは社内PJの名称です(参考:A 10x Faster TypeScript

Q4. 返り値の型が void で推論されるのは?

const A = () => { throw 'Oops'; };
function B() { throw 'Oops'; }
const C = function () { throw 'Oops'; };
  1. A
  2. B
  3. C

答えと解説

正解: 2. B

関数宣言は return 文がない場合、返り値の型が void として推論されます。アロー関数や関数式は、 throw により返り値なしであることが推論され、返り値の型は never になります(参考:TypeScript Playground

この挙動に関する詳細はTypeScriptのIssue #16608、Pull Request #8767、さらにTypeScriptのLead開発者が回答しているStackOverflow Inconsistent never type inferenceも参考になります。

JavaScript

Q5. 次のコードの結果は?

"use strict";
let str = "zozo";
str[0] = "s";
console.log(str);
  1. "sozo"
  2. "zozo"
  3. Error

答えと解説

正解: 3. Error

文字列はプリミティブで不変です。strictモードでは str[0] はread only propertyとして代入不可、TypeErrorになります。ちなみに非strictモードでは代入は無視され、エラーにならず "zozo" が出力されます。

Q6. 次のうち JavaScript (ECMAScript) の予約語は?

  1. string
  2. with
  3. using

答えと解説

正解: 2. with

with はECMAScriptの予約語です。string はTypeScriptにおける型名、using は文脈依存キーワードで予約語ではありません。

Q7. 次の式の結果は?

(NaN == NaN) === (NaN === NaN)
  1. true
  2. false
  3. Error

答えと解説

正解: 1. true

NaNは自分自身とも等しくないため、== / === ともに false を返し、結果は false === falsetrue です。 ===== の違いは型変換の有無ですが、どちらもNaNには適用されないため、結果は同じになります。

ランタイム

Q8. 次の TypeScript ファイルを実行するとエラーになるのは?

const enum Hoge { a, b }
console.log(Hoge.a);
// node ./index.mts
// deno run ./index.mts
// bun run ./index.mts
  1. Node.js
  2. Deno
  3. Bun

答えと解説

正解: 1. Node.js

Node.jsのtype strippingはerasable syntaxのみを対象としておりconst enumを扱えません。DenoとBunはサポートしています。

Q9. globalThis.navigator.share() メソッドが使えるのは?

  1. iOS WebView
  2. Android WebView
  3. Deno

答えと解説

正解: 1. iOS WebView

Web Share API (navigator.share) はiOS WebViewではサポートされますが、Denoではサポートされていません。Android WebViewでは現在バグとして利用できない状態にあります(参考:Navigator: share() メソッド - ブラウザーの互換性Web Share API and Media Session API don't work in Android WebView 40540400 - Chromium

Q10. fetch API はどの組織・仕様グループで標準化されている?

  1. WHATWG
  2. ECMA-262
  3. W3C

答えと解説

正解: 1. WHATWG

fetchはWHATWGの Fetch Standard で標準化されています。

おわりに

以上、TSKaigi 2026スポンサーブースクイズの紹介でした。現地でクイズに挑戦してくださった皆様、改めてありがとうございました。かなりマニアックな内容が多く難しかったと思いますが、楽しんでいただけていれば幸いです。

また、TSKaigi 2026のスポンサーブースや、本記事で解説したクイズを通してZOZOのWebフロントエンドエンジニアに興味を持たれた方は、技術スタックなどがまとまったページをぜひご覧ください。

techblog.zozo.com

ZOZOでは、一緒にサービスを作り上げてくれる方を募集中です。ご興味のある方は、以下のリンクからぜひご応募ください。

corp.zozo.com

カテゴリー