看看下面的代码,没有错误,我想知道为什么function type
可以应用于{} type
"typescript": "~2.9.1"
,
interface IIndexCtlState {
x: {}
}
const state: IIndexCtlState = {
x: function y() {return "sdf"}
}
答案 0 :(得分:1)
键入打字稿是结构性的,{}
定义了没有成员的类型。任何其他类型都可以与此类型兼容。基元,函数,其他对象,什么:
let s: {};
s = 1;
s = ""
s = () => ""
s = null // err under strictNullChecks
在严格的null检查下,null
和undefined
无法分配给{}
。但是除此之外,可以将任何内容分配给{}
。
如果您要表示的是对象,则object
类型可能会更好,但仍允许使用函数(因为函数是对象)
let s: object;
s = 1; //err
s = "" // err
s = () => ""
s = { foo: ""};
s = null // err under strictNullChecks
答案 1 :(得分:0)
“我不知道打字稿,但是在javascript中,(几乎)所有东西都是对象,包括函数– Jaromanda X 10分钟前 ” 恰恰相反,JavaScript中的一切都是函数,这意味着对象就是函数,主要值也是如此。例如对象的extends(inherit)函数,而不是相反的。