Javascript 为什么';功能类型';可适用于';{}型';
看看下面的代码,没有错误,我想知道为什么Javascript 为什么';功能类型';可适用于';{}型';,javascript,typescript,Javascript,Typescript,看看下面的代码,没有错误,我想知道为什么函数类型可以应用于{}类型 “typescript”:“~2.9.1” 在typescript中键入是结构化的,{}定义了一个没有成员的类型。任何其他类型都可以与此类型兼容。基本体、函数、其他对象、任何内容: let s: {}; s = 1; s = "" s = () => "" s = null // err under strictNullChecks 在严格的空检查下,null和undefined不能分配给{}。但除此之外,任何东西都可以
函数类型
可以应用于{}类型
“typescript”:“~2.9.1”
在typescript中键入是结构化的,
{}
定义了一个没有成员的类型。任何其他类型都可以与此类型兼容。基本体、函数、其他对象、任何内容:
let s: {};
s = 1;
s = ""
s = () => ""
s = null // err under strictNullChecks
在严格的空检查下,null
和undefined
不能分配给{}
。但除此之外,任何东西都可以分配给{}
如果要表示对象,则对象
类型可能更好,但仍然允许使用函数(因为函数是对象)
“我不知道typescript,但在javascript中,(几乎)一切都是对象,包括函数——10分钟前的Jaromanda X "
不,恰恰相反,在JavaScript中,一切都是函数,这意味着对象是函数,主值也是函数。例如,对象扩展(继承)函数,而不是相反。我不知道typescript,但在javascript中,(几乎)一切都是对象,包括函数。这个问题不是关于
对象构造函数,而是关于对象类型{}
,它不是函数。另见
let s: {};
s = 1;
s = ""
s = () => ""
s = null // err under strictNullChecks
let s: object;
s = 1; //err
s = "" // err
s = () => ""
s = { foo: ""};
s = null // err under strictNullChecks