首页 > 解决方案 > “{}”作为 Typescript 中的类型

问题描述

如下声明的变量是什么类型。在什么情况下有用?

let x: {}

在下面的类型别名中是什么意思{}。是否等价于objectany?为什么要使用{}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)
}

标签: typescript

解决方案


正如其他人指出的那样 - 一旦变量类型为any,如果您尝试访问不存在的属性或分配任何值,编译器将不会警告您。

关于objectvs {}-object是代表非原始类型的类型,即任何不是number| string| boolean| symbol.

const foo: object = 'test'; // error 
const bar: {} = 'test'; // ok

推荐阅读