Typescript 在打字稿中无效。为什么要从console.log获取结果?

Typescript 在打字稿中无效。为什么要从console.log获取结果?,typescript,typescript-types,Typescript,Typescript Types,我没听懂,请给我解释一下。当我们用LET-ok输入void时,我得到了 但是,当我们在此处键入示例时: let foo: void; foo = 2; 无论如何,我会得到“嗨”。为什么?我在试图理解时有点困惑 我没听懂,请给我解释一下。当我们用LET-ok输入void时,我得到了 但是如果我在头脑中正确地解析它,问题的后半部分将void显示为函数的返回类型(在这种情况下,为nothing),而问题的前半部分显示一个void变量,Typescript只允许将null或未定义的作为赋值 第二部分工

我没听懂,请给我解释一下。当我们用LET-ok输入void时,我得到了

但是,当我们在此处键入示例时:

let foo: void;
foo = 2;

无论如何,我会得到“嗨”。为什么?

我在试图理解时有点困惑

我没听懂,请给我解释一下。当我们用LET-ok输入void时,我得到了

但是如果我在头脑中正确地解析它,问题的后半部分将void显示为函数的返回类型(在这种情况下,为nothing),而问题的前半部分显示一个void变量,Typescript只允许将
null
未定义的
作为赋值


第二部分工作,因为函数不尝试返回任何内容。它不接受“void”作为参数<代码>消息类型是非类型化的,因此实际上任何对象都将被允许进入。

函数上的最后一个类型用于定义其返回的类型

你可能会问,为什么它会起作用

功能测试(msg:string):无效{
控制台日志(msg);
}
因为它不会返回任何东西

让myVar:void=test(“你好!”);
console.log(myVar);
当您尝试它时,myVar将返回
未定义的
,因为函数本身不返回任何内容。这和我的一样

let不可用:void=未定义;

那么回报意味着什么呢?Return是从函数返回的数据。例如:

函数idk():字符串{
返回“你好,世界!”;
}
然后,当我执行它时,它确实返回字符串

让myVar:string=idk();
console.log(myVar);

看看MDN的这一点。

我看不到结果,我只看到控制台日志。我非常努力地理解您的问题,但它不适合我。你到底在问什么?您不确定为什么在console.log中获得输出吗?或者您认为不应该允许您调用函数
log
?为了让它快速运行:
函数测试(消息:string):void
->
string
是属性/变量的类型(您的第一个示例-顶部)
void
是函数返回的类型(您的第二个示例)。对不起,我稍微更正了一下。是的,为什么我要从函数中得到结果?
为什么我要从函数中得到结果
← 您没有从函数中获得结果。该函数的副作用是将消息发送到console.log,后者将消息打印到控制台,但函数本身不返回任何内容
console.log
与函数的返回值不同。感谢您提供的详细答案。那么,console.log和return做了不同的事情吗?Console.log-仅显示有关参数的信息。回报-给我们价值。是吗?是的,没错。我忘了提到console.log的使用。但就是这样。
function test(message): void {
  console.log(message);
}

test("hi");