gpt4 book ai didi

javascript - 寓言文档 Pojo 属性

转载 作者:行者123 更新时间:2023-12-03 21:31:06 25 4
gpt4 key购买 nike

有没有关于什么的文档 [<Pojo>]应该怎么办?我得到了 redux 示例,并认为它可以解开受歧视的联合。问题是我将 Action 定义为可区分的联合,但 redux 不允许将对象文字以外的任何内容作为 Action 传递,因此可区分的联合不能是 Action 。

所以下面的类型

[<Pojo>]
type TodoAction =
| EditTodo of id:int * text:string
| ClearCompleted

console.log(EditTodo(22,"Hello World"))
console.log(ClearCompleted)

编译为:
console.log({
type: "EditTodo",
id: 22,
text: "Hello World"
});
console.log({
type: "ClearCompleted"
});

对象字面量具有“类型”属性(您在 redux 中需要它)是幸运的“意外”吗?

如果没有 Pojo,它将是:
console.log(new TodoAction("EditTodo", [22, "Hello World"]));
console.log(new TodoAction("ClearCompleted", []));

如果您尝试 store.dispatch ,那将不起作用,因为操作只能是对象文字(具有“类型”属性)

因此,尝试从一个工作示例进行逆向工程很有趣,但拥有一份说明它应该如何工作的文档更有趣。

有这样的事情吗?

在源码根目录下使用grep得到如下文件:./src/fable/Fable.Core/Fable.Core.fs

和:
/// Compile a record as a JS object literals.
/// More info: http://fable.io/docs/interacting.html
type PojoAttribute() =
inherit Attribute()

但是文档交互没有关于它做什么的更多信息。我将尝试更多地使用它,看看是否可以将该值用作联合或它是否已经展开。

如果 Fable 的创建者/贡献者碰巧读到了这个;谢谢,这是个好主意,如果需要,我很乐意做出贡献。

所以问题是:如果没有这样的东西,文档在哪里,那么我们如何创建它?我很想写一些,但只能猜测大多数寓言编译器是如何工作的。

如果您收到以下错误:

error FSHARP: The type 'Pojo' is not defined



请确保您导入 Fable.core.dll 并打开它:
#r "./node_modules/fable-core/Fable.Core.dll"
open Fable.Core

最佳答案

我最近发现的最好的指南之一是 F# Interop with Javascript in Fable: The Complete Guide by Zaid Ajaj .
顺便说一下,属性,[< Pojo >] , 适用于 F# 记录并确保它们编译为 javascript 对象文字(Plain Old Javascript Object)。显然,转换到这样的对象不是记录的默认行为,这看起来很奇怪。

关于javascript - 寓言文档 Pojo 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42137768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com