Модуль и класс с тем же именем
Это разрешено:
type Test = class end
[<CompilationRepresentation (CompilationRepresentationFlags.ModuleSuffix)>]
module Test = begin end
Но это не так:
[<CompilationRepresentation (CompilationRepresentationFlags.ModuleSuffix)>]
module Test = begin end
type Test = class end
Зачем?
Во втором случае ошибка: Дублирующее определение типа или модуля "Тест".
Я хотел бы иметь возможность определить некоторые публичные [<Literal>]
константы, которые требуются для типа и важны для пользователей типа внутри модуля с тем же именем.
1 ответ
Решение
Вы можете открыть объявление типа, закрыть его и открыть позже, примерно так:
type Test = class end
[<CompilationRepresentation (CompilationRepresentationFlags.ModuleSuffix)>]
module Test =
[<Literal>]
let myLiteral = "myLiteral"
type Test with
static member test = ()
Я использую этот трюк все время;)