给出以下代码:
private getJsonBody(body: {}|FormData) {
return !(body instanceof FormData) ? JSON.stringify(body) : body;
}
打开和关闭花括号作为一种类型意味着什么?在当前环境中,我使用的是无法编译的,因此必须将其更改为any
才能正常工作。
答案 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;
}