问题标签 [type-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
134 浏览

sql - SQL 类型 TIME WITH TIMEZONE 有意义吗?

在将一些数据库列映射到 Java 类时,我偶然发现了这种晦涩难懂的SQL-92 标准类型(由 PostgreSQL、H2 和 HyperSQL afaik 实现)。我从未使用过它,但我想了解如果我找到它,它是如何清晰地映射到 Java 类型的。

以下是我可以看到的变体:

  • 案例 ATIME类型,例如15:20:01。这是“当地时间”。时区对应用程序是显而易见的,因此数据库不会记录它。

  • 案例 BTIME带偏移量的,如15:20:01+04:00. 它代表“世界时间”。这个时间可以简单地转换为 UTC 或任何其他世界时钟。

  • 案例 CTIME带有时区的 A,例如15:20:01 EDT. 由于解释时间的规则很大程度上取决于具体的日期,如果没有日期,我就无法真正理解它;但是,如果我添加日期,它就会变成TIMESTAMP,这是完全不同的东西。

那么,SQL 标准是否弄错了?或者也许“带时区的时间”应该始终解释为“带偏移的时间”(案例 B)?

0 投票
0 回答
75 浏览

typescript - 要求接口具有来自枚举的所有属性

有没有办法强制 Typescript 接口实现枚举的所有键?我的代码如下:

我想要的是,SettingsTypeMap如果它缺少一个枚举键,我会抛出一个错误,例如,如果它看起来像这样:

它应该抛出一个错误,比如“接口缺少属性Setting.END_TIME, Setting.COOL_FEATURE, Setting.SOME_EXPIRY_SETTING”。

0 投票
1 回答
36 浏览

typescript - 类型函子和文字数组解包

我需要帮助将我在纸上写的一些具有挑战性的 TS 启发的伪代码转换为具体的 TS。

为了完整起见,这里有一个ItemOf符合预期的定义,一个来自文字数组的文字字符串()的“副产品类型” "a" | "b" | ...,准备提供给Pick

是否可以像我试图做的那样解开类型?
我知道它可能受到了 ML 的启发,但我对它可能依赖的特性感兴趣,以便让这种类型函子定义在 TS 上运行
典型用法是:

0 投票
1 回答
197 浏览

typescript - 打字稿:类型映射类型不能用原始类型索引

我正在编写一个实例化的类,该类具有一个方法,该方法的返回类型是一个对象,其中的键来自编译器推断的泛型类型。我遇到了以下代码片段的问题,因为编译器告诉我泛型类型U不能按类型索引T——我认为这是不正确的,因为U使用 进行类型映射T,因此 T 将始终能够索引类型的对象U。有没有办法向编译器确​​认是这种情况?

最小片段:

根据 Rich N. 的回答,此类将按如下方式使用:

对于上下文:DynamicReturnFormatisDataParserreturnObjectis decode。我想要decodedObject一个非“一刀切”的类型,它只包含传递给类实例化的属性。

0 投票
1 回答
231 浏览

typescript - 将 typescript moment.Moment 类型重新映射到我的扩展类型

我正在使用MomentJS库,但我没有直接使用Moment对象,而是使用我自己的扩展,并在实例之上添加了一些附加功能Moment

我还编写了一个定义文件MyMoment.d.ts,它重新映射现有的moment.Moment,以便所有函数都(...) => Moment变为(...) => MyMoment.

问题是某些函数采用“Moment”类型的参数,即diff()。如果我有两个实例MyMoment并调用diff(),则会收到类型不兼容错误:

TS2345:“MyMoment”类型的参数不可分配给“MomentInput”类型的参数。
类型“MyMoment”不可分配给类型“Moment”。

我上面的类型映射器还应该将所有函数参数的类型从 重新映射MomentMyMoment. 不幸的是,其中一些参数类型(即MomentInput)甚至是联合类型,其中一种类型是 type Moment

我没有丝毫线索(还)如何重写我的映射器来重新映射那些?

或者使用一种方法来欺骗编译器

我可以说服编译器MyMoment实际上只是Moment从类型的角度来看,除了额外的布尔属性之外几乎MyMoment extends Moment没有,但实际上它并不重要,它不会翻转编译器。我试图重写定义文件。

有趣的是,我在 VSCode 中看不到任何错误,甚至 intellisense 工作,但我的编译器抱怨:

TS2339:“时刻”类型上不存在属性“差异”。

所以仍然不能正常工作。

我可能很接近这个解决方案,但我需要你多看一眼上面的代码,或者......

也许有一些我什至没有想到的第三种方式?

0 投票
0 回答
283 浏览

oracle - Doctrine 2 Symfony 5 迁移到 oracle 数据库

我有

  • PHP 8.0
  • 在虚拟机中运行的 Ubuntu 20.4
  • Symfony 版本 5
  • 教义/orm 2.8.2
  • 教义/dbal 2.12.1
  • 学说/迁移 3.1.1

和 oracle19c 运行

我还有一些我现在想做的实体:用教义迁移。但此时我坚持这个错误:

更多信息:

  1. 在教义.yaml 中:

分贝:

我有一个使用以下命令创建的 oracle 数据库:

它没有任何问题

比我打电话

我收到此错误消息:

我所有的日期列都有类型 datetime 那里没有间隔!

我已经搜索过这个问题,但我无法通过。有人在为学说进行迁移时遇到这个问题吗?

非常感谢任何提示。

迈克尔

0 投票
1 回答
167 浏览

c++ - C++ 如何实现从类型到类型的编译时映射?

是否有编译时间映射的规范/参考实现,它将类型映射到类型?

例如,我需要一个来自IBar -> IFoo或来自的类型映射int -> IFoo

在编译时,我可以IFoo在给定一个IBar.

用 C++17 怎么办?

编辑:这是一个使用结构的示例https://godbolt.org/z/EEvrYd9PE

0 投票
2 回答
36 浏览

typescript - 检查打字稿类型映射中的空类型

我想检查一个类型是否为空对象,如果是这种情况,则将其映射到 void 类型。

上面的代码不起作用,因为 evyr 对象扩展了空对象。
另一种方法是扭转局面:

但这只会匹配具有属性的对象而any不是任何属性。

0 投票
2 回答
39 浏览

typescript - 编译 TypeScript 类型以供运行时使用

我有一个使用 REST 调用进行通信的客户端服务器应用程序。

为了防止我意外地使用了错误的类型,我在一个公共文件中定义了所有 RestCalls(摘录):

url 和方法被编码在字符串中,它也使用 express url 参数( /:)Set定义正文中的数据以及服务器是否应检查身份验证

  1. 要求
  2. 回复
  3. 错误响应
  4. 如果需要认证

然后我可以使用以下类型来获取正确的值

我现在想在运行时知道是否需要特定的呼叫身份验证。

我可以像对方法所做的那样在 url 中对其进行编码。或NeedsAuthentication用作还提供 url 的参数。这样,当我输入 URL 时,我会自动完成,只有在需要身份验证时才会为 true,否则为 false。

我不喜欢这两种解决方法。

我想做的是

有没有办法告诉编译器编译输出 JS 中的类型,这样我就不能做编译器在干扰参数需要时所做的事情?

我目前唯一的其他解决方案是编写一个执行 prebuild 的脚本,该脚本解析我的定义并输出一个包含每个 URL 的映射,如果它需要使用一些正则表达式解析进行身份验证...


编辑

我想实现以下功能

它不是传输数据的一部分,而是编码在类型映射中。

编译器会在编译时很好地将它映射为 true 或 false 的 const 字符串(实际值仍然不会被发出......) 样品完成 1 样品完成 2样品完成 3

我可以尝试使用打字稿编译器并调用任何评估返回值的函数......