首页 > 解决方案 > TS 中的函数签名确实允许附加属性

问题描述

我认为我的问题很简单。

为什么第一个示例 ( func) 没有在 TS 中中断?有没有简单的解释或一些文档可以参考我?

我声明了一个类型签名,IFunc它基本上都实现了。为什么允许我使用其他属性扩展返回值?编译器当然会验证并且存在,但它不会抱怨我添加了另一个属性,尽管没有定义这样的属性。funcfunc2funcprop1prop2prop3ISome

在第二个示例 ( func2) 中,当设置了返回类型时,编译器会抱怨这一点ISome

我注意到第一个示例中的 lambda 函数和第二个示例中的函数声明之间的区别,这是解释的一部分吗?这是Playground中的代码。

interface ISome {
  prop1: string;
  prop2: number;
}

type IFunc = () => ISome;

export const func: IFunc = () => {
  return { prop1: '1', prop2: 33, prop3: true };
};

export function func2(): ISome {
  return { prop1: '1', prop2: 33, prop3: true };
}

标签: typescript

解决方案


推荐阅读