MDN を⾒るのがオススメ • Can I use • https://caniuse.com !" mozilla のドメイン下にあるが、Google やマイクロソフトなどが Open Web Docs という団体を通じて⽀援をしている https://opencollective.com/open-web-docs/updates/ introducing-open-web-docs #hatenaintern)*)+
্ॻ͖Մೳ const b = "b" // ্ॻ͖ෆՄೳ a = "A" // OK b = "B" // Cannot assign to "b" because it is a constant JavaScript における変数宣⾔は基本的に const を優先して使うこと を推奨します。変数が変更されないことがわかっている場合、コード を読む際の理解が容易になります。 #hatenaintern)*)+
"./namedModule" • as でリネーム出来る import { logType as LOGTYPE } from "./namedModule" • * as で export されているもの全てをオブジェクトにする;; import * as Logger from "./namedModule" Logger.hello() // 'hello' !! 必要なものだけを取り込むことで受けられる恩恵(webpack による TreeShakingなど)も多いので、基本的には * as は避ける⽅のがオススメ。 #hatenaintern)*)+
= (val: string | number) => { // Property 'toUpperCase' does not exist on type 'string | number'. // Property 'toUpperCase' does not exist on type 'number'. val.toUpperCase() if (typeof val === "string") { // ͜͜Ͱvalstringܕ return val.toUpperCase() } // ͜͜Ͱvalnumberܕ return val.toFixed(2) } #hatenaintern)*)+
などと組み合わせることで JavaScript で定義した配列やオブジェクトの値から列挙した型などを⽣成で きる。 type Person = { name: string age: number } type Age = Person["age"] // number const signalColors = ["red", "blue", "yellow"] as const // as const͠ͳ͍ͱstring[]ʹͳΔ // Arrayʹ[number]ͰΞΫηε͢ΔͱྻͷΛྻڍͨ͠ܕΛಘΒΕΔ type Signal = typeof signalColors[number] // 'red' | 'blue' | 'yellow' #hatenaintern)*)+
number • 同様のことをこのようにも書ける type f = { (x: number): number } • Overloads を型宣⾔と共に書きたい場合は後者を使う type func = { (x: number): number (x: string): string } #hatenaintern)*)+
• React DOM は HTML の属性名ではなく、キャメルケースの命名 規則を使⽤します。(aria-* や data-* 属性は例外です。) • class も className と記述されますが、これは class が JavaScript において予約語であるためです。 #hatenaintern)*)+