Difficult to play with functor

https://rescript-lang.org/try?code=LYewJgrgNgpgBAFwJ4Ad4FkCGKAqr4C8cA3gFACQyaipAvqaaJLHFinEQBR5oBcr2HjACUHAHwlScOOQACTaDE4AiBDADOCZcIowAHmoBOAO0xQ4AcxgJ+nTYYCWxi6IIShAOgQc4yq1oY5BVgVNU1tXQMYEzM4dWtbeycLABo4TwRXCQhjB28iP2tlOgZg+ABlBEdnNiF+WvwfMmkqeHy4quSSxnBFOErqizYfNk4B5Ia0HVJYb0wfcZrsD38VAEYAJgBmCNJMAFoxACl1D0WLDa8QABkQAHdogGFMeKA

How can I get the actual ModuleType.t?

module type MapType = {
	type t
}

module Map = (Type: MapType) => {
  	@module("test")
	external get: (string) => Type.t = "get"

	@module("test")
	external set: (string, Type.t) => unit = "get"
}

module StringMapType: MapType = {
  type t = string
}

module StringMap = Map(StringMapType)

let a = StringMap.get("123")

// a is not string, but StringMap.t
a->Js.String2.toLowerCase

Remove the : MapType annotation from StringMapType.

https://rescript-lang.org/try?code=LYewJgrgNgpgBAFwJ4Ad4FkCGKAqr4C8cA3gFByL6KkC+ppokscWKcRAFHmgFwvbcYASnYA+EuTgABRtBgcARAhgBnBAqGSYAD2UAnAHaYocAOYwEfNXoCWB02LiCAdAnZwF59fQozwcxWU1DS1dGENjOBULPg5rO1MAGid8VxECcQgDGzciTwsFWnpZZgBlBFt7VkF3MgpkNER3ePsihn8yioTWd1YOcsrTavxNUlg3THcB7uxnL0UARgAmAGYQ0kwAWlEAKRVnafsl1xAAGRAAd3CAYUxo0iA

1 Like