【发布时间】:2017-08-24 17:54:31
【问题描述】:
为什么下面的代码编译成功?由于bar 不是MyState 的一部分,我预计它会产生编译器错误。
type MyState = { foo: number; };
type Reducer<T> = (state: T) => T;
const wtf: Reducer<MyState> = (state) => {
return { foo: 123, bar: 123 }; // `bar` isn't part of MyState
};
【问题讨论】:
-
为什么会这样。 MyState 只需要 foo,如果它有更多,它仍然满足 MyState 的定义。
-
@ErikPhilips 编译器会抱怨:
const myState: MyState = { foo: 123, bar: 123 };并会说“对象文字只能指定已知属性,而 'bar' 不存在于类型 'MyState' 中。”
标签: typescript