typescript - “{}”作为 Typescript 中的类型
问题描述
如下声明的变量是什么类型。在什么情况下有用?
let x: {}
在下面的类型别名中是什么意思{}
。是否等价于object
或any
?为什么要使用{}
as type 而不是any
?, 在这种情况下是否{}
表示空对象的“实例”?(对我来说很有意义)
type MessageHandler<D, P> = (data: D, payload: P) => void
type MessageHandlerGeneric = MessageHandler<{}, any}
interface MessageHandlers {
[index: string]: MessageHandlerGeneric
}
let handlers = MessageHandlers = {
handler1: (data: string, payload: Pyaload),
handler2: (data: Array<string>, payload: Payload)
}
解决方案
正如其他人指出的那样 - 一旦变量类型为any
,如果您尝试访问不存在的属性或分配任何值,编译器将不会警告您。
关于object
vs {}
-object
是代表非原始类型的类型,即任何不是number
| string
| boolean
| symbol
.
const foo: object = 'test'; // error
const bar: {} = 'test'; // ok
推荐阅读
- fancytree - 如何响应用户扩展节点?
- three.js - Potree 点击放大/缩小
- javascript - 如何更改网页中下拉滚动的初始位置?
- push-notification - 通知分组在 Android 8.1 中不起作用
- voip - “无法找到或加载主类 de.fhg.fokus.hss.main.HSSContainer”- OpenIMSCore 的 FHoSS
- jenkins - 签入不会触发Jenkins中的所有应用程序重建,只有一个
- javascript - 材料不适用于 obj 文件
- php - readfile 返回损坏的 zip 下载
- python - PsychoPy 在脑电图实验中播放不规则延迟的声音
- regex - 将外部单引号 (') 替换为双引号 ("),将内部双引号 (") 替换为单引号 (')