这种类型的注释是什么意思

时间:2019-08-10 19:59:21

标签: typescript

给出以下代码:

    private getJsonBody(body: {}|FormData) {
        return !(body instanceof FormData) ? JSON.stringify(body) : body;
    }

打开和关闭花括号作为一种类型意味着什么?在当前环境中,我使用的是无法编译的,因此必须将其更改为any才能正常工作。

1 个答案:

答案 0 :(得分:1)

那是Empty Object Type

它描述了一个没有成员的对象。当您尝试访问此类对象上的任意属性时,TypeScript会发出编译时错误:

// Type {}
const obj = {};

// Error: Property 'prop' does not exist on type '{}'.
obj.prop = "value";

但是,您仍然可以使用在Object类型上定义的所有属性和方法,这些属性和方法可通过JavaScript的原型链隐式地获得:

// Type {}
const obj = {};

// "[object Object]"
obj.toString();

相关信息是Basarat's Lazy Object Initialization条目,用于解释Typescript如何拒绝该过程以及如何使用它。

使用该条目,您需要以这种方式更改代码:

interface Foo {
  bar: string;
  baz: number;
}

private getJsonBody(body: {} as Foo | FormData) {
  return !(body instanceof FormData)
    ? JSON.stringify(body)
    : body;
}