gpt4 book ai didi

TypeScript: `void` 与可选/默认参数不兼容

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:34 24 4
gpt4 key购买 nike

虽然 undefinednullvoid 兼容,但反之则不然,这对我来说似乎很奇怪,这大大削弱了可选参数:

function getThing(): string | void {}
function checkThing(val: string = 'abcd') {}
checkThing(getThing())

t.ts(3,12): error TS2345: Argument of type 'string | void' is not assignable to parameter of type 'string'.
Type 'void' is not assignable to type 'string'.

指定一个没有默认值的可选 arg 不会改变错误,但指定一个带有 void 的联合会改变错误(并按预期生成带有默认初始化参数的错误)。坚持在所有可能在任何时间点作为 void 函数结果目标的可选参数上声明一个 void 联合似乎相当繁琐。您还会用 void 参数做什么?

最佳答案

您的代码示例:

function getThing(): string | void {}
function checkThing(val: string = 'abcd') {}
checkThing(getThing())

t.ts(3,12): error TS2345: Argument of type 'string | void' is not assignable to parameter of type 'string'.
Type 'void' is not assignable to type 'string'.

关注错误 Type 'void' is not assignable to type 'string'checkThing 需要一个 string 并得到您说可能是 void 的内容。因此错误。

It seems rather onerous to insist on declaring a void union on all optional parameters that may at any point in time be the target of the result of a void function. What else would you do with a void parameter?

这是 TypeScript 团队设计的。你有权有不同的意见,我可以同情你的愿望 🌹

关于TypeScript: `void` 与可选/默认参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43728423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com