E4136

E4136#

此表达式的类型不是新类型。

在 MoonBit 中,您可以使用点访问运算符 (.) 访问新类型的底层结构体的字段。但是,如果结构体未包装在新类型中,则无法访问该字段。

错误示例#

struct Inner {
  value : Int
}

type! ErrorOuter Inner

enum EnumOuter {
  Outer(Inner)
}

fn main {
  let outer : ErrorOuter = ErrorOuter(Inner::{ value: 1 })
  println(outer.value) // Error: This expression has type ErrorOuter, which is an error type type and not a struct.
  let outer : EnumOuter = Outer(Inner::{ value: 2 })
  println(outer.value) // Error: This expression has type EnumOuter, which is a variant type and not a struct.
}

建议#

如果要访问底层结构体的字段,您应该将其包装在新类型中:

type Outer Inner

fn main {
  let outer : Outer = Inner::{ value: 1 }
  println(outer.value)
}