我试图定义一个返回类型为Object的函数类型,以强制实现它的函数返回与返回类型中定义的确切对象属性相同的对象。
然而编译器并不严格要求返回的对象,允许存在未在返回对象类型中定义的额外属性。
interface Obj {
foo: string;
}
type Func = () => Obj;
const fn: Func = () => {
return {
foo: 'bar',
blah: '', // compiler does not show an error
};
};
相反,如果在 fn
函数中指定了返回类型为 Obj
,则编译器会显示一个错误。
interface Obj {
foo: string;
}
const fn = (): Obj => {
return {
foo: 'bar',
blah: '', // compiler shows an error
};
};
TS Playground上的示例代码可以解释为什么TypeScript会以不同的方式处理这些情况吗?是否有一种方法可以在使用函数类型的同时保持返回类型的严格性?