在 TypeScript 中是无效的。为啥我从 console.log 得到结果?
Posted
技术标签:
【中文标题】在 TypeScript 中是无效的。为啥我从 console.log 得到结果?【英文标题】:void in TypeScript. Why do I get the result from the console.log?在 TypeScript 中是无效的。为什么我从 console.log 得到结果? 【发布时间】:2021-07-22 03:47:46 【问题描述】:let foo: void;
foo = 2;
我没听懂,请给我解释一下。当我们用 LET 输入 void - 好的,我明白了。
但是,当我们在这里输入示例时:
function test(message): void
console.log(message);
test("hi");
无论如何,我会得到“嗨”。为什么?
【问题讨论】:
我看不到结果,我只看到控制台日志记录 我非常努力地理解您的问题,但对我来说并没有点击。你到底在问什么?您不确定为什么在 console.log 中得到输出?或者你认为你不应该被允许调用函数log
?
为了快速:function test(message: string): void
-> string
是属性/变量的类型(您的第一个示例 - 在顶部); void
是函数返回的类型(您的第二个示例)
抱歉,我稍微改正了一下。所以是的,为什么我会从函数中得到结果?
why am I getting the result from function
← 你没有从函数中得到结果。该函数的副作用是向console.log 发送一条消息,该消息将其打印到控制台,但该函数本身不返回任何内容。 console.log
与函数的返回值不同。
【参考方案1】:
函数的最后一个类型用于定义其返回的类型。
你可能会问,为什么它会起作用?
function test(msg: string): void
console.log(msg);
因为它不返回任何东西。
let myVar: void = test("hello!");
console.log(myVar);
当你尝试它时,myVar 将返回undefined
,因为函数本身什么也不返回。与this Typescript example相同。
let unusable: void = undefined;
那么返回是什么意思? Return 是从函数返回的数据。示例:
function idk(): string
return "Hello World!";
然后,当我执行它时,它确实返回字符串。
let myVar: string = idk();
console.log(myVar);
看看 MDN 的 return documentation。
【讨论】:
感谢您的详细回答。那么,console.log 和 return 做了不同的事情吗? Console.log - 仅向我们显示有关参数的信息。回报 - 给我们价值。对吗? 是的,没错。我忘了提到console.log的使用。但就是这样。【参考方案2】:我有点搞不懂
我没听懂,请给我解释一下。当我们用 LET 输入 void - 好的,我得到了
但是如果我在脑海中正确解析它,问题的后半部分显示 void 作为函数的返回类型(在这种情况下,什么都没有),而问题的前半部分显示一个 void 变量,其中 Typescript 只允许 null
或 undefined
作为分配。
后半部分有效,因为该函数不尝试返回任何内容。它不接受“void”作为参数。 message
类型是无类型的,因此实际上允许任何对象进入。
【讨论】:
以上是关于在 TypeScript 中是无效的。为啥我从 console.log 得到结果?的主要内容,如果未能解决你的问题,请参考以下文章