【发布时间】:2020-12-09 14:00:03
【问题描述】:
我已经在 Typescript 上工作了一段时间,并注意到了这种奇怪的行为。如果您调用不带括号的函数,Typescript 不会引发错误。它宁愿在控制台上打印整个功能。这是为什么?我在 C++ 中看不到这种行为。
【问题讨论】:
标签: angular typescript
我已经在 Typescript 上工作了一段时间,并注意到了这种奇怪的行为。如果您调用不带括号的函数,Typescript 不会引发错误。它宁愿在控制台上打印整个功能。这是为什么?我在 C++ 中看不到这种行为。
【问题讨论】:
标签: angular typescript
函数是 JavaScript 中的一等成员(TypeScript 是 JavaScript 的扩展)。它们可以像数字、字符串和数组这样的任何其他表达式一样分配给变量并传递 - 只要输入正确(在 TypeScript 中)。
const fn = () => {
return 10;
};
const bar = fn;
const result = bar();
console.log(bar);
console.log(result);
由于console.log 允许任何参数类型,因此不禁止在 TypeScript 中记录函数。
但是如果你试图引用函数而不调用它,当你真正需要调用它来提取返回值时,一旦你尝试使用结果,你很快就会遇到错误。例如:
const subArr = arr.slice();
创建数组的浅部分。如果你不小心这样做了
const subArr = arr.slice;
然后尝试在预期其类型为数组的任何地方使用 subArr,TypeScript 会抛出错误,因为它确定 subArr 的类型为 function,而不是类型 Array。
【讨论】:
它与打字稿无关,而是 javascript 做的。它将打印您提供给控制台日志的任何内容。所以如果你给函数名不带括号,它会打印函数定义。
【讨论】: