Slide 1

Slide 1 text

5ZQF4DSJQUͰܕݕࠪثΛ࡞Δ ܕษڧձ

Slide 2

Slide 2 text

ܕݕࠪث w ͋Δܭࢉମܥʹ͓͚Δ߲ͷܕΛಋग़͢Δ w ܕ෇͚نଇʹ౰ͯ͸·Βͳ͍߲͕ଘࡏ͢Δ࣌͸
 ΤϥʔΛ౤͛Δ

Slide 3

Slide 3 text

+BWB4DSJQUͷܕݕࠪثΛ ࡞ͬͯΈΔ w ඞཁʹഭΒΕͨͷͰʜʜ w ߏจ໦͸&TQSJNBͱ͔Λ࢖ͬͯಘΔ͜ͱ͕Ͱ͖Δ w 5ZQF4DSJQUͷܕ৘ใΛదٓ༗ޮ׆༻͢Δ w ؆୯ͷͨΊʹɺ߲͸෭࡞༻Λ࣋ͨͳ͍΋ͷͱ͢Δ

Slide 4

Slide 4 text

"45&YQMPSFS IUUQTBTUFYQMPSFSOFU

Slide 5

Slide 5 text

ܕ෇͚نଇͷྫ • true: boolean • t: string ∧ u: U → (t + u): string • t: T ∧ u: T → (t === u): boolean • t: { u: U } → t.u: U ˢΛͦͷ··࣮૷͢Ε͹0,

Slide 6

Slide 6 text

είʔϓ w ݱࡏݕ͍ࠪͯ͠Δ߲Ͱར༻Մೳͳม਺ͷҰཡΛ
 ͓࣋ͬͯ͘ඞཁ͕͋ΔͷͰɺ function typeOf(ast: ESTree.Node, scope: Var[]): Type Έ͍ͨͳײ͡ʹͳΔ

Slide 7

Slide 7 text

ΤϥʔΛूΊΔ w ܕ෇͚نଇʹ౰ͯ͸·Βͳ͍࣌ʹΤϥʔΛ౤͛Δ
 ͷͰ͸ͳ͘ɺจ຺ʹΤϥʔΛ௥Ճ͢Δ w ϝοηʔδ΍ιʔείʔυ্ͷ৔ॴΛ෇༩͢Δͱศར
 ΤσΟλʔͱ͔Ͱ੺ઢΛҾ͚Δ

Slide 8

Slide 8 text

શମ૾ function typeOf(ast: ESTree.Node, scope: Var[]) { switch (ast.type) { case ‘BinaryOperator’: // … case ‘…’: default: this.errors.push({ message: ‘…’, start: …, end: … }) } }