有关如何添加类型注释以解决此错误的任何想法?
我在getFooBar中的Foo.Bar下面出现了一个红色波浪形,并发出以下错误信息。
根据此程序点之前的信息查找不确定类型的对象。在此程序点之前可能需要类型注释来约束对象的类型。这可能允许解析查找。
[<AllowNullLiteralAttribute>]
type Test(foo : Test, bar : int) =
let getFooBar(test : Test) =
test.Foo.Bar
member this.Foo with get() = foo
member this.Bar with get() = bar
答案 0 :(得分:4)
我不明白为什么需要这样做但只是注释Foo
的结果似乎有效:
[<AllowNullLiteralAttribute>]
type Test(foo : Test, bar : int) =
let getFooBar(test : Test) =
(test.Foo : Test).Bar
member this.Foo with get() = foo
member this.Bar with get() = bar
答案 1 :(得分:2)
您也可以只注释Foo
属性的类型:
type Test(foo, bar : int) =
let getFooBar(test : Test) =
test.Foo.Bar
member this.Foo with get() : Test = foo
member this.Bar with get() = bar
答案 2 :(得分:0)
刚试过制作一个匿名函数并且它有效。
let getFooBar(test : Test) =
test.Foo |> fun (x:Test) -> x.Bar
有更好的方法吗?