lua は変数に型を定義しませんが 型は存在します。 他の型のない言語と同じように 変数に色々な型を入れることができます。
適当に試してみます。
$ lua >
対話モードに入りました。
> = type(a)
nil
type は引数の型を返す関数です。
変数 a が定義されていない状態では nil を返します。
> a = "test" > = type(a) return > a = 2.2 > = type(a) number > a = true > = type(a) boolean > a = {1,2,3} > = type(a) table
変数には関数も入れることができます。
> a = type > = type(a) function
当然、次のようなこともできます。
> a = type > = a(a) function