← melang

型

Last Updated: 2026-09-28 02:00

結論

melangでは静的型付けが理想的である。型の不整合は実行するまでもなくエラーにしたい一方、型注釈を省略しても推論できる範囲はコンパイラソースコードを解析し、実行可能な形式(機械語や中間表現)に変換するプログラム。静的型付け言語では、実行前にコンパイラが型の不整合などをチェックする役割も担う。に任せる。

理想としては、次のように書けることを目指す。

// 型注釈あり
val age: Int = 20

// コンパイラが推論できるなら省略できる
val age = 20

// 型が合わない代入は、実行するまでもなくエラーになる
val age: Int = "20" // コンパイルエラー

ただし、「静的型付けにする」で型に関する設計がすべて決まるわけではない。型推論の範囲、基本型の構成、Generics や Interface / Trait の設計、Null の扱いなど、個別の論点はそれぞれ別のnoteで扱う。

他言語比較

静的型付けと動的型付けの違いは、型の整合性をいつ検査するかにある。型システムの設計では、プログラミング言語は大きく2つに分かれる。プログラムを実行する前に検査する「静的型付け」と、主に実行時に検査する「動的型付け」である。主要な言語がどちらを採用しているかを比較する。

言語型付け説明
Rust静的型付け
MoonBit静的型付け
Swift静的型付け
Kotlin静的型付け
Java静的型付け
Scala静的型付け
C#静的型付け
C++静的型付け
C静的型付け
Go静的型付け
Zig静的型付け
OCaml静的型付け
F#静的型付け
Haskell静的型付け
Erlang動的型付け
Elixir動的型付け
TypeScript静的型付け
JavaScript動的型付け
PHP動的型付け
Ruby動的型付け
Python動的型付け

トレードオフ

静的型付けの利点

静的型付けの欠点