打字稿中的通用对象类型

2023-12-28

在打字稿中,有什么方法可以为变量分配通用对象类型。 这就是我所说的“通用对象类型”的含义

let myVariable: GenericObject = 1 // Should throw an error
                              = 'abc' // Should throw an error
                              = {} // OK
                              = {name: 'qwerty'} //OK

即它应该只允许将 javascript 对象分配给变量,而不允许其他类型的数据(数字、字符串、布尔值)


当然有:

type GenericObject = { [key: string]: any };

let myVariable1: GenericObject = 1; // Type 'number' is not assignable to type '{ [key: string]: any; }'
let myVariable2: GenericObject = 'abc'; // Type 'string' is not assignable to type '{ [key: string]: any; }'
let myVariable3: GenericObject = {} // OK
let myVariable4: GenericObject = {name: 'qwerty'} //OK

(操场上的代码 https://www.typescriptlang.org/play/#src=type%20GenericObject%20%3D%20%7B%20%5Bkey%3A%20string%5D%3A%20any%20%7D%3B%0A%0Alet%20myVariable1%3A%20GenericObject%20%3D%201%3B%20%2F%2F%20Type%20'number'%20is%20not%20assignable%20to%20type%20'%7B%20%5Bkey%3A%20string%5D%3A%20any%3B%20%7D'%0Alet%20myVariable2%3A%20GenericObject%20%3D%20'abc'%3B%20%2F%2F%20Type%20'string'%20is%20not%20assignable%20to%20type%20'%7B%20%5Bkey%3A%20string%5D%3A%20any%3B%20%7D'%0Alet%20myVariable3%3A%20GenericObject%20%3D%20%7B%7D%20%2F%2F%20OK%0Alet%20myVariable4%3A%20GenericObject%20%3D%20%7Bname%3A%20'qwerty'%7D%20%2F%2FOK)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打字稿中的通用对象类型 的相关文章

随机推荐

  • 如何在 Flutter 中禁用 FlatButton 的启动突出显示?

    我有一个扁平按钮 我不希望单击按钮时突出显示 我尝试将飞溅颜色更改为透明 但这不起作用 这是我的 FlatButton 的代码 Widget button new Container child new Container padding
  • PHP 如何将数据追加到序列化数组中

    如果我有一个序列化数组 如何向其附加更多值 我应该先反序列化它 gt 添加数据然后再次序列化它吗 Yes function addItem serializedArray item a unserialize serializedArray
  • 为什么 golangticker.Stop() 在tickerTest1中不起作用?

    我知道Stop函数无法关闭通道 我只是对两个不同的结果感到困惑tickerTest1 and tickerTest2 package main import time log func tickerTest1 ticker time New
  • 如果我只有任务 ID,我可以获得 celery 任务的参数吗?

    如果我有原来的任务 我可以从中得到论据task request args 但是如果我只有任务 ID 有没有办法获取参数 看起来没有办法从AsyncResult对象 据我所知 没有办法重新创建任务 我想这样做是因为我有一个前端可以轮询后端以获
  • Clang 无法在 std::function 实例化中扩展参数包

    编译的代码片段std c 17作为唯一的编译器标志 使用 GCC 9 1 成功编译 Godbolt https godbolt org z QKJomx 使用 Clang 8 0 0 发出编译器错误 代码片段下方的错误 Godbolt ht
  • SQL Server 性能提示[重复]

    这个问题在这里已经有答案了 可能的重复 SQL WHERE 子句是否短路计算 https stackoverflow com questions 789231 is the sql where clause short circuit ev
  • 使用 python/PIL 自动裁剪图像

    谁能帮我弄清楚我的图像自动裁剪脚本中发生了什么 我有一个带有大透明区域 空间的 png 图像 我希望能够自动裁剪该空间并保留必需品 原始图像有一个方形画布 最好是矩形 仅封装分子 here s the original image 通过谷歌
  • Prolog - 简化导数

    所以我这个学期才开始使用 Prolog 并完成了实现一个非常基本的作业d function variable derivative 我这样做是这样的 d X X 1 d C X 0 atomic C C X d X E X E X E 1
  • 错误:没有为控制器定义“_sonata_admin”

    我按照文档添加自定义路线 当我单击列表视图中的按钮时 出现错误 没有 sonata admin为控制器定义 UserController以及当前的路线resetPassword 文档 http sonata project org bund
  • C#:调用 Bitmap.save() 后 Dispose() 一个 Bitmap 对象?

    我有这个 Bitmap bmp new Bitmap image image processing bmp Save path fileName 我想知道是否需要打电话bmp Dispose 在此代码之后 提前致谢 我会用using块和Pa
  • 处理过期航空里程的流程

    我正在开发一个需要处理过期航空里程的应用程序 里程可以使用 但如果在特定日期之前未使用 里程就会过期 我想确保我的里程数已过期 但如果已使用 则不要过期 因此 我必须在过期之前检查在给定日期范围内是否使用了足够的里程 以下是我的初步想法 有
  • UIWebView YouTube 嵌入视频未加载

    我在获取通过 UIWebView 嵌入到我正在制作的 iOS 应用程序中的视频时遇到一些问题 iframe 播放器加载完全正常 但是当我点击播放按钮时 白色旋转器出现一秒钟然后消失 只留下一个黑框如果我触摸黑框 我会得到标题和 i 按钮 但
  • 从数据库输出到文本区域

    我试图通过这样做将数据库字段值放入文本区域 但它不起作用
  • 尝试将创建的文本文件作为电子邮件附件发送 - 从默认文件夹

    我正在尝试一些简单的事情 例如创建一个文本文件 然后将其作为附件发送 虽然如果我使用 SD 卡它工作正常 但我不知道将它放在 标准数据文件夹 中的哪里 所以我的应用程序实际上适用于没有 SD 卡的每个人 并且该文件有点不可见 当这段代码有效
  • Dapper 抛出“DynamicMethod 的类型所有者无效”。

    所以我尝试使用 Dapper net 并且我很喜欢它 我不喜欢的是 当我尝试批量插入实体时 出现以下错误 DynamicMethod 的类型所有者无效 在 System Reflection Emit DynamicMethod Init
  • 在 JavaScript 中如何将语言代码转换为语言名称?

    我使用以下方式获取浏览器的语言代码 var lang window navigator language 这将返回代码 即 en US 如何将其转换为语言名称 即英语 Javascript 有一个 API 使用Intl使用选择的语言将语言转
  • 如何为传奇提供历史实例?

    我想在成功登录后重定向到新页面 路线 V4 的使用方式如下 import browserHistory from browser history signleton class App extends Component render co
  • 如何使用适用于 Mac 的 Oracle 新 1.7 JDK 运行 Eclipse?

    我正在尝试获取新的 1 7 JDK https blogs oracle com java entry five update java releases使用 Eclipse 这是 Oracle 的官方版本 我的意思并不是仅仅将 Eclip
  • 为没有 PowerBi 帐户且不允许共享回来的用户共享仪表板和报告的方法

    我想与没有 Microsoft PowerBI 帐户的用户共享一些 PowerBi 仪表板 我知道我可以在 Sharepoint 在线共享它 但此解决方案的问题是我们可以在网页按钮上找到共享按钮 Facebook Twitter URL 我
  • 打字稿中的通用对象类型

    在打字稿中 有什么方法可以为变量分配通用对象类型 这就是我所说的 通用对象类型 的含义 let myVariable GenericObject 1 Should throw an error abc Should throw an err