gpt4 book ai didi

scala.js - js.Dictionary 是 "Map"的正确类型吗

转载 作者:行者123 更新时间:2023-12-04 02:09:47 24 4
gpt4 key购买 nike

我正在将 Twilio Video javascript API 与 scala.js 一起使用,例如对话 API:https://media.twiliocdn.com/sdk/js/conversations/releases/0.13.9/docs/Conversation.html

该 API 使用 javascript“Map”对象(它使用 new Map() 之类的 javascript 代码创建它们。)

我能够让它在我的 scala.js 对象中工作的唯一方法是使用 js.Dictionary,类似于:

@js.native
class TwilioConversation extends js.Object {

var participants: js.Dictionary[TwilioParticipant] = js.native

这是为“ map ”建模的正确类型,还是有更好的类型?当我尝试使用 scala Map/mutable.Map 时,它因类转换异常而失败。

最佳答案

这不是正确的类型。正确的类型应该是 js.Map,但目前它还不存在。它仍然存在于 https://github.com/scala-js/scala-js/pull/2110/files#diff-4937cb9b8e89d2f21babe311012e63a1 的正在进行的 PR 中。

在它真正进入 Scala.js 之前,您有两个选择:

  • 像您一样使用 js.Dictionary,只要您需要做的就是使用 String 键和获取/设置值(因为这些操作的公共(public) API 是相同的)字典和 map )。
  • 在您的代码库中定义一个 JSMap,如下所示:(灵感来自上述链接的 PR,但没有引用 IterableIterator部分):
import scala.scalajs.js
import js.annotation._

@js.native
@JSName("Map")
class JSMap[K, V] extends js.Object {
def size: Int = js.native

def clear(): Unit = js.native

def has(key: K): Boolean = js.native

def get(key: K): js.UndefOr[V] = js.native

def set(key: K, value: V): this.type = js.native

def delete(key: K): Boolean = js.native
}

关于scala.js - js.Dictionary 是 "Map"的正确类型吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39696166/

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